WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

JSSE および JCE プログラミング・インターフェースによるセキュア・トランスポート

このトピックでは、 Java Secure Socket Extension (JSSE) および Java Cryptography Extension (JCE) プログラミング・インターフェースを使用したトランスポート・セキュリティーについて詳しく説明します。 このトピック内には、IBM バージョンの Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) についての説明があります。

Java Secure Socket Extension

Java Secure Socket Extension (JSSE) は、WebSphere Application Server のトランスポート・セキュリティーを提供します。 JSSE は、データの暗号化、メッセージの保全、 および認証の機能など、Secure Sockets Layer および Transport Layer Security (TLS) プロトコルに 対応する、アプリケーション・プログラミング・インターフェース (API) フレームワークと API の実装を提供します。

JSSE API は、 Java 2 SDK、Standard Edition (J2SDK) のバージョン 1.4 に統合されています。JSSE API の API パッケージは javax.net.ssl.* です。 JSSE API の使用法に関する 資料は、http://java.sun.com/j2se/1.4.2/docs/api/index.html の J2SE 1.4.2 API の資料にあります。

いくつかの JSSE プロバイダーは、 WebSphere Application Server に付属の J2SDK バージョン 1.4 と一緒に出荷されます。IBMJSSE プロバイダーは、 以前の WebSphere Application Server リリースで使用されます。 IBMJSSEFIPS プロバイダーは IBMJSSE プロバイダー と関連しており、サーバー上で FIPS が使用可能な場合に使用されます。 これらのプロバイダーは、 いずれも WebSphere Application Server バージョン 6.x の Java Message Service (JMS) や HTTP トランスポートを処理することができません。 これらのトランスポートは、J2SDK バージョン 1.4 の ネットワーク入出力 (NIO) 非同期チャネルを利用します。

HTTP および JMS トランスポート は、新規 IBMJSSE2 プロバイダーを使用します。 WebSphere Application Server バージョン 6.x の その他のすべてのトランスポートは、 現状では IBMJSSE2 プロバイダーを使用しています。 必要に応じて、従来の IBMJSSE プロバイダーに 切り替えることができます (SSL レパートリー構成で指定)。

新規の IBMJSSE2 プロバイダーの詳細に ついては、http://www.ibm.com/developerworks/java/jdk/security/142/jsse2docs.zip ファイルに ある資料を参照してください。 このファイルを unzip すると、JSSE2 リファレンス・ ガイドは jsse2Docs/JSSE2RefGuide.html、JSSE2 API 資料は jsse2Docs/api/index.html、 さらに JSSE2 サンプルは jsse2Docs/samples として 解凍されます。

Java Secure Socket Extension のカスタマイズ

多くの JSSE の性質を カスタマイズすることができます。 カスタマイズするには、暗号化パッケージ・プロバイダー、X509Certificate、 および HTTPS プロトコルのさまざまな実装をプラグインするか、 あるいはさまざまなデフォルトの鍵ストア・ファイル、鍵マネージャー・ファクトリー、およびトラスト・マネージャー・ ファクトリーを指定します。 以下の表に、カスタマイズできる性質とそのデフォルト値、およびカスタマイズに使用されるメカニズムが要約されています。 カスタマイズできる鍵の性質は、以下のとおりです。
カスタマイズ可能な項目 デフォルト カスタマイズ方法
X509Certificate IBM からの X509Certificate インプリメンテーション cert.provider.x509v1 セキュリティー・プロパティー
HTTPS プロトコル IBM からのインプリメンテーション java.protocol.handler.pkgs システム・プロパティー
暗号化パッケージ・プロバイダー IBMJSSE2 セキュリティー・プロパティー・ファイル内の security.provider.n= 行。 説明を参照。
デフォルト鍵ストア なし * javax.net.ssl.keyStore システム・プロパティー
デフォルトのトラストストア あれば jssecacerts。なければ cacerts。 * javax.net.ssl.trustStore システム・プロパティー
デフォルトの鍵マネージャー・ファクトリー IbmX509 ssl.KeyManagerFactory.algorithm セキュリティー・プロパティー
デフォルトのトラスト・マネージャー・ファクトリー IbmX509 ssl.TrustManagerFactory.algorithm セキュリティー・プロパティー

システム・プロパティーの設定によって カスタマイズできるものであれば、 Java コマンドの -D オプションを使用して、 システム・プロパティーを静的に設定します。 システム・プロパティーは、 管理コンソールを使用して設定できます。 あるいは、コード内で java.lang.System.setProperty メソッドを呼び出して、 システム・プロパティーを動的に設定します。 これは、次のようになります。System.setProperty(propertyName,"propertyValue")

Java セキュリティー・プロパティーを 設定してカスタマイズできるものであれば、java.security プロパティー・ファイルで、セキュリティー・プロパティー値を静的に指定します。 このセキュリティー・プロパティーは、propertyName=propertyValue です。 コードで java.security.Security.setProperty メソッドを呼び出して、 Java セキュリティー・プロパティーを動的に設定します。

java.security プロパティー・ファイルは以下のディレクトリーにあります。

app_server_root/java/jre/lib/security ディレクトリー。

アプリケーション・プログラミング・インターフェース

JSSE では、 標準のアプリケーション・プログラミング・インターフェース (API) は、 javax.net ファイル、javax.net.ssl ファイル、 および javax.security.cert ファイルのパッケージで入手可能です。 API は、以下のものをカバーしています。
  • ソケットと SSL ソケット
  • ソケットと SSL ソケットを作成するファクトリー
  • セキュア・ソケット・ファクトリー用のファクトリーとして機能するセキュア・ソケット・コンテキスト
  • 鍵マネージャー・インターフェースとトラスト・マネージャー・インターフェース
  • セキュア HTTP URL 接続クラス
  • 公開鍵証明書 API
JSSE API についての詳細は、 以下の情報にアクセスしてください。
バージョン 1.4.2
  1. Web サイト http://www.ibm.com/developerworks/java/jdk/security/ にアクセスします。
  2. Java 1.4.2」をクリックします。
  3. 「Java Secure Socket Extension (JSSE) Guide」セクションの「Javadoc HTML documentation」をクリックします。

Java Secure Socket Extension を使用したサンプル

Java Secure Socket Extension (JSSE) は、その機能を説明するサンプルも提供しています。Java Secure Socket Extension (JSSE) は、その機能を説明するサンプルも提供しています。以下の場所にあるサンプルにアクセスできます。
バージョン 1.4.2
  1. Web サイト http://www.ibm.com/developerworks/java/jdk/security/ にアクセスします。
  2. Java 1.4.2」をクリックします。
  3. 「Java Secure Socket Extension (JSSE) Guide」セクションの「jssedocs_samples.zip」をクリックします。
以下のファイルを探します。
ファイル 説明
ClientJsse.java JSSE を使用して、簡単なクライアントとサーバー間の対話をデモンストレーションします。使用可能な暗号スイートがすべて使用されています。
OldServerJsse.java バックレベル・サンプル
ServerPKCS12Jsse.java JSSE と PKCS12 鍵ストア・ファイルを使用して、簡単なクライアントとサーバー間の対話をデモンストレーションします。使用可能な暗号スイートがすべて使用されています。
ClientPKCS12Jsse.java JSSE と PKCS12 鍵ストア・ファイルを使用して、簡単なクライアントとサーバー間の対話をデモンストレーションします。使用可能な暗号スイートがすべて使用されています。
UseHttps.java com.ibm.net.ssl.www.protocol クラス の Java プロトコル・ハンドラーを使用 して、SSL 対応 または SSL 非対応 の Web サーバーへのアクセスを例示します。 URL は、接頭部 http または https を付けて指定します。このサイトから戻される HTML が表示されます。
詳しい説明は、ソース・コードを参照してください。サンプルを実行する前に、これらの指示に従ってください。

Java 2 セキュリティーの許可

JSSE を使用してアプリケーションを実行するには、 以下の許可が必要になる場合があります。 このリストは、単なる参照用です。
  • java.util.PropertyPermission "java.protocol.handler.pkgs", "write"
  • java.lang.RuntimePermission "writeFileDescriptor"
  • java.lang.RuntimePermission "readFileDescriptor"
  • java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.truststore", "read"
IBMJSSE プロバイダーの場合:
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
SUNJSSE プロバイダーの場合
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

デバッグ

javax.net.debug システム・プロパティーを介して構成することにより、JSSE は、 動的なデバッグ・トレース -Djavax.net.debug=true を提供します。

J2EE のデバッグ・バージョンがインストールされている場合、値 true を指定すると、トレース機能が有効になります。

資料

JSSE に対する資料の参照については、セキュリティー: 学習用リソース の項目を参照してください。

JCE

Java Cryptography Extension (JCE) は、WebSphere Application Server 用の暗号アルゴリズム、鍵アルゴリズム、およびハッシュ・アルゴリズムを提供します。 JCE は、暗号化、鍵生成、鍵一致、 およびメッセージ確認コード (MAC) の各アルゴリズムのフレームワークと実装も提供します。 暗号化のサポートには、対称、非対称、ブロック、ストリームの各暗号が含まれます。

IBMJCE

IBM バージョンの Java Cryptography Extension (IBMJCE) は、 WebSphere Application Server で使用される JCE 暗号サービス・プロバイダーのインプリメンテーションです。 IBMJCE は SunJCE に似ていますが、IBMJCE は、SunJCE にはない、 数多くのアルゴリズムを提供します。
  • 暗号アルゴリズム (AES、DES、TripleDES、PBEs、Blowfish など)
  • シグニチャー・アルゴリズム (SHA1withRSA、MD5withRSA、SHA1withDSA)
  • メッセージ・ダイジェスト・アルゴリズム (MD5、MD2、SHA1、SHA-256、SHA-384、SHA-512)
  • メッセージ確認コード (HmacSHA1、HmacMD5)
  • 鍵一致アルゴリズム (DiffieHellman)
  • 乱数生成アルゴリズム (IBMSecureRandom、SHA1PRNG)
  • 鍵ストア (JKS、JCEKS、PKCS12、JCERACFKS [z/OS のみ])
  • [バージョン 6.0.2] 鍵ストア (JKS、JCEKS、PKCS12、JCERACFKS [z/OS のみ]、 および JCE4758RACFKS [z/OS のみ])
IBMJCE は、com.ibm.crypto.provider.* パッケージに所属します。

詳しくは、以下の Web サイトで、JCE についての情報を参照してください。 http://www.ibm.com/developerworks/java/jdk/security/142/

IBMJCEFIPS

IBM バージョンの Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) は、 WebSphere Application Server で使用される JCE 暗号サービス・プロバイダーのインプリメンテーションです。 IBMJCEFIPS サービス・プロバイダーには、以下のものが実装されています。
  • シグニチャー・アルゴリズム (SHA1withDSA、SHA1withRSA)
  • 暗号アルゴリズム (AES、TripleDES、RSA)
  • 鍵一致アルゴリズム (DiffieHellman)
  • キー (ペア) ジェネレーター (DSA、AES、TripleDES、HmacSHA1、RSA、DiffieHellman)
  • メッセージ確認コード (MAC) (HmacSHA1)
  • メッセージ・ダイジェスト (MD5、SHA-1、SHA-256、SHA-384、SHA-512)
  • アルゴリズム・パラメーター・ジェネレーター (DiffieHellman、DSA)
  • アルゴリズム・パラメーター (AES、DiffieHellman、DES、TripleDES、DSA)
  • キー・ファクトリー (DiffieHellman、DSA、RSA)
  • 秘密鍵ファクトリー (AES、TripleDES)
  • 証明書 (X.509)
  • セキュア・ランダム (IBMSecureRandom)

アプリケーション・プログラミング・インターフェース

Java Cryptography Extension (JCE) のアーキテクチャーは、プロバイダーをベースとしています。 プロバイダーは、JCE により定義されている API を実装することによって、 JCE フレームワークにプラグインすることができます。 JCE API は以下のものに対応しています。
  • 対称バルク暗号化 (DES、RC2、IDEA など)
  • 対称ストリーム暗号化 (RC4 など)
  • 非対称暗号化 (RSA など)
  • パスワード・ベースの暗号化 (PBE)
  • 鍵一致
  • メッセージ確認コード

JCE API については、 Web サイト http://www.ibm.com/developerworks/java/jdk/security/ に詳しい説明があります。

Java Cryptography Extension を使用したサンプル

サンプルは、 Web サイト http://www.ibm.com/developerworks/java/jdk/security/jceDocs_samples.zip ファイルにあります。 このファイルを unzip して、jceDocs/samples ディレクトリーで以下のファイルを探します。
ファイル 説明
SampleDSASignature.java DSA 鍵のペア (公開鍵と秘密鍵) を生成し、 その鍵を使用して、SHA1withDSA アルゴリズムによって、 メッセージにデジタル署名をする方法をデモンストレーションします。
SampleMarsCrypto.java Mars 秘密鍵の生成方法、および Mars の暗号化と暗号化解除を行う方法をデモンストレーションします。
SampleMessageDigests.java MD2 および MD5 アルゴリズムのメッセージ・ダイジェストを使用する方法をデモンストレーションします。
SampleRSACrypto.java RSA 鍵ペアの生成方法、および RSA の暗号化と暗号化解除を行う方法をデモンストレーションします。
SampleRSASignatures.java RSA 鍵のペア (公開鍵と秘密鍵) を生成し、その鍵を使用して、SHA1withRSA アルゴリズム を用いてメッセージにデジタル署名をする方法を例示します。
SampleX509Verification.java X509 証明書を検証する方法を例示します。

資料

JCE に関する資料については、セキュリティー: 学習用リソース を参照してください。




関連タスク
WebSphere セキュリティー・インフラストラクチャーに対する拡張の開発
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/csec_jsse.html