BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Not-Yet-Commons-SSLが、パワフルでフリーのSSL機能を提供

Not-Yet-Commons-SSLが、パワフルでフリーのSSL機能を提供

Not-Yet-Commons-SSLは、様々な認証フォーマットや、設定のオプションをサポートする使いやすいAPIを提供することによって、SSLの利用が簡単になるように設計された、ApacheライセンスのJavaライブラリである。特に、それは、単一VMの中で複数認証の利用、自身で署名した認証の操作、標準的な認証フォーマットを全てサポートするといった、JavaのビルトインSSLのサポートに関しての、長い間居座っているいくつかの問題を解決してくれる。

そのプロジェクトでは、そのライブラリの機能をまとめ、設計のゴールを5つ提唱している。

SSLとJavaを簡単にする。今まで、セキュアな作りになっているJavaアプリケーションで、自身で署名した認証を扱った仕事をしたいと思ったことがありますか?今まで、単一で動作するJVMで、1つのクライアントの認証以上のことをやりたいと思ったことがありますか?$JAVA_HOME/jre/lib/security/cacerts ファイルを編集したり、 -Djavax.net.ssl.keyStore=/path/to/keystoreオプションをつけてJavaを実行することはできます。両方のアプローチは、初めは良かったのですが、十分に規模を大きくすることができません。システムの単位で変化するJVM(HTTP, LDAP, JDBC, RMI等)によって、全てのSSLソケットを汚したいと本当に思っていますか?Commons-SSLで、SSLSocketFactory単位での自然なやり方で、必要なSSLのオプションを制御することができ、これらのオプションがシステム自体に影響することはありません。

セキュリティを改善する。現在では、デフォルトでCRL(※1)のチェックを行っています。しかし、私たちは、OCSP(※2)をすぐにでもサポートしたいと思っています!ThawteやVerisignから24時間毎に、約500KBのCRLファイルをダウンロードしなければならないのは、良い気分ではありません。OCSPは、そういった点を改善してくれます。

(※1)CRL(Certificate Revocation List)証明書失効リスト/証明書破棄リスト 有効期間内に無効(取消された)となった公開鍵証明書のシリアル番号の一覧。
(※2)OCSP(Online Certificate Status Protocol)デジタル証明書の有効性をリアルタイムで確認するプロトコル。

フレキシビリティを改善する。ホスト名や期限切れのチェック、CRLチェックなど、その他多くのオプションの可否を、生成したSSLSocketFactory単位で設定することができます。
より多くのファイルフォーマットのサポート、及び、それらのフォーマットをより強固なものとする。
  • commons-sslでは、PEMやDERのプライベートキーで暗号化されたPKCS8(※3)とOpenSSL(※4)のフォーマットを50以上サポートしています。
  • X.509(※5)の認証は、PEMやDERのエンコードが可能です。さらに、PKCS7(※6)チェーンも可能です。(とは言え、Javaでは以前からこれをサポートしていますが)
  • PKCS12(※7)ファイルを、PEMで作成できます。(OpenSSL pkcs12によって作成)
  • Base64-PEMのパースは、特に、Base64の外側の部分において、余計なスペースやコメントに対しより柔軟になっています。
(※3)PKCS8 (Public Key Cryptography Standard) 公開鍵を用いた暗号技術の標準規格の1つで、秘密鍵情報に関する形式標準。
(※4)OpenSSL オープンソースのSSL実装
(※5)電子鍵証明書および証明書失効リスト(CRL)の標準仕様。
(※6)暗号メッセージ形式に関する標準
(※7)個人秘密情報交換に関する標準 
自動的に、キーマテリアル若しくはトラストマテリアルのタイプを検知します。利用者は、キーストアがPKCS12もしくはJKSなのかを意識する必要がありません。単に、プライベートキーを複合するためのパスワードを知っていれば良いのです。 
Not-Yet-Commons-SSLは、ブリティッシュコロンビア州のCredit Union Centralで開発され、2006年にApache Software Foundationに寄贈された。現在では、Apache Incubation policyを通過し、数ヶ月後には、Apache-Commonsプロジェクトの一部となることを期待している。

Dejan Bosanac氏は、Javaビルトインの機能との比較を、次のように書いている。

JavaでSSLソケット接続をしようとする際、デフォルトで知られていることだとは思いますが、Javaでは、JKSやPKCS12の認証フォーマットをサポートしています。OpenSSLを利用したいという人たちは、キーのコンバートやPKCS12の認証を提案し、JDKで提供されているキーツールコマンドを使用して、それらをキーストアにインポートします。

これらのこと全ては、大抵のアプリケーションにとっては、重大事ではありません。しかし、SSLに強く依存したプロジェクトのためのより良いソリューションであるべきです。Not-yet-commons-sslプロジェクトは、未だに公式なApacheプロジェクトではないのでこのように呼ばれています(Not-yetがついているということ)が、JavaとSSLの統合を単純にすることを目的としたプロジェクトです。

(原文は2007年6月4日にリリースされました)

この記事に星をつける

おすすめ度
スタイル

BT