JSSE および JCE プログラミング・インターフェースによるセキュア・トランスポート
Java™ Secure Socket Extension (JSSE) および Java Cryptography Extension (JCE) プログラミング・インターフェースを使用したトランスポート・セキュリティーの詳細について詳しく説明します。このトピック内には、IBM® バージョンの Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) についての説明があります。
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 プロバイダーについて詳しくは、http://www.ibm.com/developerworks/java/jdk/security/60/ にある資料を参照してください。
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 ディレクトリー。
app_server_root/properties ディレクトリー。
profile_root/properties ディレクトリー。
アプリケーション・プログラミング・インターフェース
- ソケットと SSL ソケット
- ソケットと SSL ソケットを作成するファクトリー
- セキュア・ソケット・ファクトリー用のファクトリーとして機能するセキュア・ソケット・コンテキスト
- 鍵マネージャー・インターフェースとトラスト・マネージャー・インターフェース
- セキュア HTTP URL 接続クラス
- 公開鍵証明書 API
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- バージョン 1.6
- Web サイト http://www.ibm.com/developerworks/java/jdk/security/ にアクセスします。
- Java 1.6 をクリックします。
- 「Java Secure Socket Extension (JSSE) Guide」セクションの「Javadoc HTML documentation」をクリックします。
Java Secure Socket Extension を使用したサンプル
- バージョン 1.6
- Web サイト http://www.ibm.com/developerworks/java/jdk/security/ にアクセスします。
- 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 を提供します。
J2EE のデバッグ・バージョンがインストールされている場合、値 true を指定すると、トレース機能が有効になります。
値 true を指定すると、
トレース機能が有効になります。
管理コンソールを使用して、アプリケーション・サーバーのデバッグのためのシステム・プロパティーを設定します。
資料
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)
アプリケーション・プログラミング・インターフェース
- 対称バルク暗号化 (DES、RC2、IDEA など)
- 対称ストリーム暗号化 (RC4 など)
- 非対称暗号化 (RSA など)
- パスワード・ベースの暗号化 (PBE)
- 鍵一致
- メッセージ確認コード
JCE API については、
Web サイト http://www.ibm.com/developerworks/java/jdk/security/ に詳しい説明があります。
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 に関する資料については、『セキュリティー: 学習用リソース』トピックを参照してください。