SOAtest および Virtualize を設定して、
HTTPS (SSL 経由の HTTP) を使用してデプロイされた Web サービスを使用するには、HTTPS 接続に使用されるサーバー証明書を特定し、登録する必要があります:
SOAtest および/または Virtualize を閉じます (現在起動している場合)。
証明書を次の場所にコピーします:
Virtualize:
<virtualize_install_dir>/plugins/com.parasoft.xtest.libs.web_<virtualize_version_number>/root/lib
SOAtest:
<soatest_install_dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<soatest_version_number>/root/lib
.
次の形式でコマンドを実行します:keytool -import -alias <certificate_alias> -file <certificate_file> -keystore cacerts
たとえば、証明書のファイル名が test.cert の場合、 以下から次のコマンドを実行します。<soatest_install_dir>/plugins/com.parasoft.xtest.libs.web_<soatest_version_number>/root/lib
または <virtualize_install_dir>/plugins/com.parasoft.xtest.libs.web_<virtualize_version_number>/root/lib
prompt:keytool -import -alias serverTrustCert -file test.cert -keystore cacerts
これは、 "serverTrustCert" エイリアス名で “cacerts” ファイルに証明書をインポートします。
keytool コマンドを実行する前に Java の keytool 実行ファイルをパスに設定しておく必要があります。製品に同梱されている Java バイナリのバージョンを使用します。 製品の Java バイナリをパスに追加するには、コマンドライン プロンプトを開き、 keytool を参照する前に下記の内容を入力します。
注意: <Parasoft Test install dir> は、 Parasoft Test がインストールされている場所を参照します (Windows の例: "C:\Program Files\Parasoft\Test" on Windows)。 <arch> は、アーキテクチャを参照します (例: win32.x86、 linux.x86、 solaris.sparc、 win32.x86_64、または linux.x86_64)。 <java_version> は、Parasoft Test インストール時に同梱されるものを参照します。 |
keytool -list -keystore cacerts
SOAtest または Virtualize を起動して、サービスに再度アクセスします。
HTTPS を使用してデプロイされたサービスが動作しない場合は、次のことを確認します。
上記の要件を満たすことができない場合 (たとえば必要な権限を持っていない場合)、次の操作を行います。
SOAtest/Virtualize は証明書に関するいかなる問題にも関わらず、指定した任意の WSDL にアクセスしようとします。しかし、SOAtest/Virtualize は SOAP メッセージ送信時には証明書の使用が要求されるため、まだそれを使用しようとします。
負荷テストのマスター マシンだけでなく、スレーブ マシンにも cacerts に証明書を追加する必要があります。追加しない場合は、スレーブ マシンで負荷テストを実行するときに、SSL 接続が動作しません。 |
上記の方法で問題が解決しない場合は、Parasoft テクニカル サポート センターまでお問い合わせください。
SOAtest および Virtualize は 標準の JVM 上で実行します。SSL/TLS ハンドシェイクの詳細情報を表示して SSL 接続問題の原因の特定に役立つようにするには、次のように JVM ネットワークと SSL デバッグを有効にします。
-J-Dssl.debug=true -J-Djavax.net.debug=all -consolelog
SOAtest/Virtualize は通常どおりに起動しますが、SSL 接続が行われるたびに、コンソールにデバッグ出力が出力されます。ファイルにトレース出力を保存したい場合 (例: output.txt) は、コマンドの最後に次を追加します。
> output.txt
Java の keytool を使用した鍵と証明書の管理についての詳細は、次を参照してください。
クライアント側の 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
and 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」を参照してください。