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 のカスタマイズ
| カスタマイズ可能な項目 | デフォルト | カスタマイズ方法 |
|---|---|---|
| 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 ディレクトリー。
profile_root/properties ディレクトリー。
JSSE のアプリケーション・プログラミング・インターフェース
- ソケットと SSL ソケット
- ソケットと SSL ソケットを作成するファクトリー
- セキュア・ソケット・ファクトリー用のファクトリーとして機能するセキュア・ソケット・コンテキスト
- 鍵マネージャー・インターフェースとトラスト・マネージャー・インターフェース
- セキュア HTTP URL 接続クラス
- 公開鍵証明書 API
- バージョン 1.6
- http://www.ibm.com/developerworks/java/jdk/security/ Web サイトにアクセスします。
- Java 1.6をクリックします。
- 「Java Secure Socket Extension (JSSE) Guide」セクションの Javadoc HTML 資料をクリックします。
Java Secure Socket Extension を使用したサンプル
- バージョン 1.6
- http://www.ibm.com/developerworks/java/jdk/security/ Web サイトにアクセスします。
- Java 1.6をクリックします。
- 「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 セキュリティーの許可
- 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"
- java.security.SecurityPermission "putProviderProperty.IBMJSSE"
- java.security.SecurityPermission "insertProvider.IBMJSSE"
- java.security.SecurityPermission "putProviderProperty.SunJSSE"
- java.security.SecurityPermission "insertProvider.SunJSSE"
デバッグ
javax.net.debug システム・プロパティーを介して構成することにより、JSSE は、 動的なデバッグ・トレース -Djavax.net.debug=true を提供します。
値 true は、JSSE のデバッグ・バージョンがインストールされている場合に、トレース機能をオンにします。
JSSE の資料
JSSE に対する資料の参照については、『セキュリティー: 学習用リソース』トピックを参照してください。
JCE
Java Cryptography Extension (JCE) は、 WebSphere Application Server用の暗号アルゴリズム、鍵アルゴリズム、およびハッシュ・アルゴリズムを提供します。 JCE は、暗号化、鍵生成、鍵一致、 およびメッセージ確認コード (MAC) の各アルゴリズムのフレームワークと実装も提供します。 暗号化のサポートには、対称、非対称、ブロック、ストリームの各暗号が含まれます。
IBMJCE
- 暗号アルゴリズム (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 のみ])
詳しくは、以下の Web サイトで、JCE についての情報を参照してください。 http://www.ibm.com/developerworks/java/jdk/security/60/
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 のアプリケーション・プログラミング・インターフェース
- 対称バルク暗号化 (DES、RC2、IDEA など)
- 対称ストリーム暗号化 (RC4 など)
- 非対称暗号化 (RSA など)
- パスワード・ベースの暗号化 (PBE)
- 鍵一致
- メッセージ確認コード
JCE API について詳しくは、 http://www.ibm.com/developerworks/java/jdk/security/ Web サイトを参照してください。
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 に関する資料については、『セキュリティー: 学習用リソース』トピックを参照してください。