SOAtest および Virtualize を設定して、
HTTPS (SSL 経由の HTTP) を使用してデプロイされた Web サービスを使用するには、HTTPS 接続に使用されるサーバー証明書を特定し、登録する必要があります:
SOAtest および/または Virtualize を閉じます (現在起動している場合)。
- HTTPS 接続に使用されるサーバー証明書がある場所を特定します。
- 証明書の “COMMON NAME” パラメーターがサーバーのマシン名とサブドメインの両方を含むことを確認します (例: machine.company.com)。
証明書を次の場所にコピーします:
Virtualize:
<virtualize_install_dir>/plugins/com.parasoft.ptest.libs.web_<virtualize_version_number>/root/lib
SOAtest:
<soatest_install_dir>/plugins/com.parasoft.ptest.libs.web_<soatest_version_number>/root/lib
このディレクトリには、信頼された証明書を記憶する cacerts ファイルを含める必要があります。次の形式でコマンドを実行します:
keytool -import -alias <certificate_alias> -file <certificate_file> -keystore cacerts
たとえば、証明書のファイル名が test.cert の場合、 以下から次のコマンドを実行します。<INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root/lib
ディレクトリ:keytool -import -alias serverTrustCert -file test.cert -keystore cacerts
これは、 "serverTrustCert" エイリアス名で “cacerts” ファイルに証明書をインポートします。- キーストアのパスワードを入力するように求められたら、 changeit と入力します。
- 証明書を信頼するかどうか尋ねられたときは、 yes と入力します。その後、証明書がキーストアに追加されたことを示すメッセージが表示されます。
- (任意) 次のコマンドを入力して、証明書がキーストアに追加されたことを確認します。その後、開いたファイルをチェックします。
keytool -list -keystore cacerts
SOAtest または Virtualize を起動して、サービスに再度アクセスします。
HTTPS を使用してデプロイされたサービスが動作しない場合は、次のことを確認します。
- サーバーが実行中である。
- HTTPS 通信時にマシンの完全な名前を使用している。
- サーバー証明書はフルネームで作成されている。
- 証明書の名前は、クライアントがアクセスしようとした名前と同じである。
上記の要件を満たすことができない場合 (たとえば必要な権限を持っていない場合)、次の操作を行います。
- [Parasoft] メニューの [設定] をクリックします。
- [設定] ダイアログの左ペインから [Parasoft] > [セキュリティ] を選択し、右ペインの [すべての証明書を信頼] オプションを選択します。
- [OK] または [適用] をクリックし、この変更を適用します。
SOAtest/Virtualize は証明書に関するいかなる問題にも関わらず、指定した任意の WSDL にアクセスしようとします。しかし、SOAtest/Virtualize は SOAP メッセージ送信時には証明書の使用が要求されるため、まだそれを使用しようとします。
注意
負荷テストのマスター マシンだけでなく、スレーブ マシンにも cacerts に証明書を追加する必要があります。追加しない場合は、スレーブ マシンで負荷テストを実行するときに、SSL 接続が動作しません。
上記の方法で問題が解決しない場合はテクニカル サポートまでお問い合わせください。
SSL 接続問題のデバッグ
SOAtest および Virtualize は 標準の JVM 上で実行します。SSL/TLS ハンドシェイクの詳細情報を表示して SSL 接続問題の原因の特定に役立つようにするには、次のように JVM ネットワークと SSL デバッグを有効にします。
- コマンドライン コンソールを開き、 SOAtest のインストール ディレクトリに移動します。
- 引数を付けて実行ファイルを起動します:
-J-Dssl.debug=true -J-Djavax.net.debug=all -consolelog
SOAtest/Virtualize は通常どおりに起動しますが、SSL 接続が行われるたびに、コンソールにデバッグ出力が出力されます。ファイルにトレース出力を保存したい場合 (例: output.txt) は、コマンドの最後に次を追加します。
> output.txt
Java の keytool を使用した鍵と証明書の管理についての詳細は、次を参照してください。
- Windows:http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html
- Linux, Mac:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
クライアント認証のトラブル シューティング
クライアント側の SSL (双方向) を使用してリクエストを送信していて、接続が失敗するか、サーバーが 401 (unauthorized) または 403 (forbidden) HTTP レスポンスを返す場合、SSL デバッグ ログには以下が含まれます:
*** ServerHelloDone [read] MD5 and SHA1 hashes: len = 4 0000: 0E 00 00 00 .... Warning: no suitable certificate found - continuing without client authentication
CertificateRequest
メッセージを確認します。このメッセージは、出力の前半で出力される必要があり、クライアントの証明書が不適切と見なされた理由を判断します。このメッセージには、サーバーから受信したリクエストに関する詳細が含まれています:
*** CertificateRequest Cert Types: RSA, ... Supported Signature Algorithms: SHA512withRSA, SHA256withRSA, SHA384withRSA, SHA1withRSA, ... Cert Authorities: <CN=GeoTrust ... <CN=VeriSign ... <CN=Go Daddy ... ...
CertificateRequest
メッセージは、Cert Types、Supported Signature Algorithms、および Cert Authorities フィールドで指定された値に基づいてクライアント証明書を選択するための要件を宣言します。クライアントの HTTP トランスポート設定で構成されたクライアント証明書 ( [Parasoft] > [設定] > [セキュリティ] > [クライアント サイド SSL] ) が CertificateRequest
メッセージのすべての要件と一致しない場合、クライアントの証明書は実際には使用されず、接続は クライアント認証なしで続行します。
場合によっては、クライアントの証明書は、要求された Cert Types
および Supported Signature Algorithms
のいずれかと一致しますが、Cert Authorities
とは一致しません。これは、キーストアにクライアント証明書チェーンがない場合に発生する可能性があります。証明書チェーンは、クライアントの証明書を発行者の証明書に接続し、次に中間認証局に接続してから、サーバーから要求された Cert Authorities
の 1 つに接続するために必要です。証明書チェーンが欠落している場合、クライアントのキーストア ファイルを再構築して、欠落している証明書チェーンを含める必要があります。
openssl コマンドラインツール を使用して、クライアントのキーストアを再構築することができます。証明書ファイルが ssl-certificate-file.crt、証明書チェーンが ssl-certificate-chain.crt、証明書のキーが ssl-certificate-key.key の場合に、次の openssl のコマンド例はクライアントのキーストアを再構築します:
# build PEM file containing client certificate and certificate chain cat ssl-certificate-file.crt ssl-certificate-chain.crt >ssl-certificate-all.pem # build pfx file openssl pkcs12 -export -in ssl-certificate-all.pem -inkey ssl-certificate-key.key -out keystore.pfx -name myname -CAfile ssl-certificate-chain.crt -caname mycaname
JMS SSL
「JMS」を参照してください。