若要配置  SOAtest 和 Virtualize、 以使用Web  服务,该服务使用 HTTPS(通过 SSL 的 HTTP)部署,则需要从服务器识别和注册用于 HTTPS 连接的证书:

  1. 关闭 SOAtest 和/或 Virtualize, (如果为开启状态)。

  2. 标识用于 HTTPS 连接的服务器证书位置。
  3. 确保该证书的 COMMON NAME 参数包含服务器的机器名称和子域名(例如, machine.company.com)。
  4. 复制证书到以下位置:

    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.

     
    该目录应该包含存储受信任证书的 cacerts 文件。

  5. 执行以下格式命令:
    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 二进制版本SOAtest 和 Virtualize。若要添加已包含的 Java 二进制到路径中,则打开命令行提示符并在引用 keytool 前输入以下内容:

    PATH =%PATH%; <Parasoft Test install dir>\<Parasoft Test version number>\plugins\com.parasoft.xtest.jdk.eclipse.core.<arch>_<java_version>\jdk\bin

    注意, <Parasoft Test install dir> 引用安装 Parasoft 测试的位置(比如,Windows 上的 "C:\Program Files\Parasoft\Test"), <arch> 参考架构(比如, win32.x86, linux.x86, win32.x86_64, or linux.x86_64),以及 <java_version> 引用包含 Parasoft 测试安装的 Java 版本。

  6. 提示输入密匙库密码时,请输入 changeit
  7. 询问是否信任该证书时,请输入 yes。然后将看到一条消息,指明该证书已添加到密匙库中。
  8. (可选项)验证证书是否通过输入以下命令,然后检查打开的文件,从而添加到密匙库中:
    keytool -list -keystore cacerts
  9. 启动 SOAtest 或 Virtualize 并尝试再次访问服务。

如果在使用 HTTPS 部署的服务时遇到问题,请验证以下内容:

  1. 服务器正在运行。
  2. 尝试与此 HTTPS 进行通信时,使用的是机器的全名。
  3. 服务器证书使用全名进行创建。
  4. 证书上的名称与客户端试图使用其访问的名称相同。

如果没有满足以上要求(例如,如果没有必要的权限):

  1. 选择 Parasoft> Preferences 以打开首选项对话框。
  2. 从首选项对话框左窗格中选择 Parasoft> Security ,然后在右窗格中选择 Trust all certificates 选项。
  3. 单击 OKApply 以应用此更改。

SOAtest/Virtualize  将尝试访问指定的所有 WSDL,而不管证书存在什么问题。然而,SOAtest/Virtualize 仍将在尝试发送 SOAP 消息的时候使用证书,因为这是必需的。

注意

必须将证书添加到负载测试奴隶机和主机上的 cacerts 文件。否则,在使用奴隶机运行负载测试时,SSL 连接将无法工作。

如果这些过程都不能处理您的问题,请以 联系 Parasoft 技术支持中所描述的其中一种方式联系 Parasoft。

调试 SSL 问题

SOAtest 和 Virtualize  在标准 JVM 上运行。若要呈现 SSL/TLS 握手的详细信息并帮助识别 SSL 连接问题的原因,请启用 JVM 网络和 SSL 调试:

  1. 打开命令行控制台并导航到 SOAtest 安装目录。
  2. 用参数启动可执行文件:
    -J-Dssl.debug=true -J-Djavax.net.debug=all -consolelog

SOAtest/Virtualize 将按往常一样启动,但是每当建立 SSL 连接时,调试输出都将打印到控制台。如果希望将堆栈输出保存到文件(例如, output.txt),则可以在命令行尾部添加以下内容:

    > output.txt

关于使用 Java keytool 管理键和证书的更多信息,请查看 Oracle Java 文档。请参考:

排除客户端身份验证的疑难解答

如果使用客户端 SSL(双向)发送请求,并且连接失败或服务器返回 401(未授权)或 403(禁止)HTTP 响应,则 SSL 调试日志可能包含以下内容:

*** ServerHelloDone
[read] MD5 and SHA1 hashes: len = 4
0000: 0E 00 00 00 ....
警告:找不到合适的证书 - 在没有客户端身份验证的情况下继续

检查 CertificateRequest 消息,该消息应该在输出的前面打印,以确定为什么认为客户端的证书不合适。此消息包含有关从服务器接收的请求的详细信息:

*** CertificateRequest
证书类型:RSA, ...
支持的签名算法:SHA512withRSA, SHA256withRSA, SHA384withRSA, SHA1withRSA, ...
证书颁发机构:
<CN=GeoTrust ...
<CN=VeriSign ...
<CN=Go Daddy ...
...

CertificateRequest 消息声明根据在 证书类型支持的签名算法证书颁发机构 字段中指定的值选择客户端证书的要求。如果在客户端的 HTTP 传输设置中配置的客户端证书 (在 Parasoft> Preferences> Security> Client side SSL下)与 CertificateRequest 消息中的所有要求都不匹配,则客户端的证书将不会实际使用,连接将在没有客户端身份验证的情况下继续。

在某些情况下,客户端的证书与请求的 证书类型 之一和 支持的签名算法匹配,但与 证书颁发机构不匹配。如果密钥库缺少客户端证书链,则可能发生这种情况。证书链用于将客户端证书连接到其颁发者的证书,然后连接到任何中间证书颁发机构,然后连接到服务器请求的其中一个 证书颁发机构 。如果证书链丢失,则需要重新生成客户端的密钥库文件以包含丢失的证书链。

您可以使用 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

  • No labels