Liberty アプリケーション・クライアント・コンテナーの SSL 通信の使用可能化
Liberty アプリケーション・クライアント・コンテナーは、サーバーと通信するために SSL 構成を必要とする場合があります。アプリケーション・クライアント・コンテナー用の SSL の構成では、 サーバーが SSL 使用可能化に必要とするのと同じ SSL フィーチャー ssl-1.0 を使用する必要があります。構成のエレメントおよび属性はアプリケーション・クライアント・コンテナーとサーバーで同じですが、 アプリケーション・クライアント・コンテナーの場合はこれらの値は client.xml ファイル内に指定されます。
このタスクについて
SSL ハンドシェークは、接続固有の保護を求めてネゴシエーションするために、 クライアントとサーバーとの間で SSL プロトコルを介して交換される一連のメッセージです。Liberty アプリケーション・クライアント・コンテナーに対して SSL を使用可能にするには、SSL フィーチャー ssl-1.0 は、クライアントによって使用される SSL 構成を形成するために必要な最小限の情報を含む必要があります。SSL 構成を形成するために必要な最小限の情報とは、 鍵ストアとパスワードです。
securityUtility createSSLCertificate コマンドを使用することによって、クライアントの鍵ストアを作成することができ、構成についての情報を得ることもできます。ユーザー定義の他の目的のために鍵ストアおよび関連する構成を作成することもできるため、 このツールの使用はオプションです。
手順
<keyStore id="defaultKeyStore" password="yourPassword" />
これが、SSL 構成を作成するために必要な最小限の構成です。 この構成で、クライアントは SSL 初期化中に鍵ストアと証明書 (存在しない場合) を作成します。指定するパスワードの長さは 6 文字以上でなければなりません。デフォルトの鍵ストア・タイプは JKS であり、 デフォルトの鍵ストアは key.jks という名前です。 これらのデフォルトは <client home>/resources/security ディレクトリーに入っています。
クライアントは、前の構成を使用している場合、defaultKeyStore を最初の開始時に作成しますが、 クライアントにデフォルト証明書を作成させることはパフォーマンス・コストを伴います。パフォーマンス・コストを回避するため、securityUtilitiy createSSLCertificate コマンドを使用して、defaultKeyStore 構成で使用されるデフォルト鍵ストアを作成することをお勧めします。
カスタム SSL 構成が必要な場合は、Liberty: SSL 構成属性を参照してください。
- 署名者証明書の受け入れ
- クライアントとサーバーの間に信頼関係が確立されていない場合、
クライアントとの通信では、ユーザーに対してサーバーからの証明書を受け入れるかどうかを尋ねるプロンプトが出されます。ユーザーの応答が「はい」の場合、
証明書が受け取られてクライアント鍵ストア構成に保管され、コマンドは先に進みます。
ユーザーが「いいえ」を指定した場合、
信頼は確立されず、呼び出しはエラーで終了します。プロンプトの例は次のとおりです。
*** SSL SIGNER EXCHANGE PROMPT *** The SSL signer from target host is not found in trust store C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks. Here is the signer information (verify the digest value matches what is displayed at the server): Subject DN: CN=localhost, O=ibm, C=us Issuer DN: CN=localhost, O=ibm, C=us Serial number: 1327582458 Expires: Sun Jan 04 06:54:18 CST 2099 SHA-1 Digest: 00:6F:25:F1:78:5D:EB:00:B1:E2:99:DB:E8:D7:DF:3B:F8:E0:20:9A Add signer to the trust store now? (y/n)
署名者をトラストストアに追加するように求められたときに ユーザーが「いいえ」と応答した場合、次のようなエラー・メッセージを受け取ることがあります。[ERROR ] CWPKI0022E: SSL ハンドシェークの失敗: SubjectDN CN=localhost, O=ibm, C=us の 署名者がターゲットのホストから送られました。SSL 構成別名 defaultSSLConfig にあるローカル・トラストストア C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks にこの署名者を追加する必要がある可能性があります。SSL ハンドシェーク例外からの拡張エラー・メッセージ: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error throw able: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: PKIX path building failed: java.security.cert.CertPathBuilderException : PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error
- 署名者証明書の自動受け入れ
- クライアントが署名者証明書を要求されることを望まず、サーバー署名者証明書を検査せずに受け入れることにする場合、
ユーザーは -autoAcceptSigner フラグをクライアント・コンテナー・コマンド行に指定することができます。
client run client_name --autoAcceptSigner
- クライアント認証
- クライアントが通信するサーバーでクライアント認証が使用可能になっている場合、 そのサーバーはクライアントを信頼する必要があり、クライアントもそのサーバーを信頼する必要があります。クライアントの鍵ストア内に 鍵と個人証明書がなければなりません。securityUtility createSSLCertificate コマンドを使用すると、 鍵ストアに個人証明書が含まれます。クライアント・アプリケーション・コンテナーが通信するサーバーは、 クライアントを信頼する必要があり、したがって、クライアントからの署名者がサーバーのトラストストアに追加される必要があります。java ツールである keytool を使用して、 アプリケーション・クライアント・コンテナーの鍵ストアから署名者を抽出し、証明書をクライアントからサーバーのトラストストアに追加することができます。