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

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

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) バージョン 5 に統合されています。 JSSE API の API パッケージは javax.net.ssl.*です。 JSSE API の使用法に関する資料は、http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html の J2SE 6 API の資料にあります。

いくつかの JSSE プロバイダーには、 WebSphere Application Serverに付属する Java 2 SDK バージョン 5 が付属しています。 IBMJSSE プロバイダーは、以前の WebSphere Application Server リリースで使用されていました。

新しい IBMJSSE2 プロバイダーについて詳しくは、 IBMJSSE2 Providerにある資料を参照してください。

Java Secure Socket Extension のカスタマイズ

多くの JSSE の性質を カスタマイズすることができます。 カスタマイズするには、暗号化パッケージ・プロバイダー、X509Certificate、 および HTTPS プロトコルのさまざまな実装をプラグインするか、 あるいはさまざまなデフォルトの鍵ストア・ファイル、鍵マネージャー・ファクトリー、およびトラスト・マネージャー・ ファクトリーを指定します。 以下の表に、カスタマイズできる性質とそのデフォルト値、およびカスタマイズに使用されるメカニズムが要約されています。
表 1. カスタマイズ可能な項目カスタマイズできる鍵の性質は、以下のとおりです。
カスタマイズ可能な項目 デフォルト カスタマイズ方法
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 プロパティー・ファイルは以下のディレクトリーにあります。

[AIX Solaris HP-UX Linux Windows]app_server_root/java/jre/lib/security ディレクトリー。

[IBM i]profile_root/properties ディレクトリー。

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

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

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

Java Secure Socket Extension (JSSE) には、その機能を示すサンプルも用意されています。 Java Secure Socket Extension (JSSE) には、その機能を示すサンプルも用意されています。 以下の場所にあるサンプルにアクセスできます。
バージョン 1.6
  1. http://www.ibm.com/developerworks/java/jdk/security/ Web サイトにアクセスします。
  2. Java 1.6をクリックします。
  3. 「Java Secure Socket Extension (JSSE) Guide」セクションで「 jssedocs_samples.zip 」をクリックします。
表 2. 抽出されたファイル以下の表には、抽出ファイルをリストしています。
ファイル 説明
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 を提供します。

[AIX Solaris HP-UX Linux Windows][IBM i]true は、JSSE のデバッグ・バージョンがインストールされている場合に、トレース機能をオンにします。

JSSE の資料

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 のみ])
IBMJCE は com.ibm.crypto.provider.* に属しています。 パッケージ。

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

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)

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

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

[AIX Solaris HP-UX Linux Windows][IBM i]JCE API について詳しくは、 http://www.ibm.com/developerworks/java/jdk/security/ Web サイトを参照してください。

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

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

JCE の資料

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