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

  1. 关闭 Virtualize (如果为开启状态)。

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

    <virtualize_install_dir>/plugins/com.parasoft.xtest.libs.web_<virtualize_version_number>/root/lib

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

  5. 执行以下格式命令:
    keytool -import -alias <certificate_alias> -file <certificate_file> -keystore cacerts

    例如,如果证书文件命名为 test.cert,则执行以下命令,该命令来自<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 二进制版本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. 启动 Virtualize 并尝试再次访问服务。

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

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

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

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

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

注意

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

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

调试 SSL 问题

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

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

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

  • No labels