To configure SOAtest and Virtualize to work withWeb services deployed using HTTPS (HTTP via the SSL), you need to identify and register the certificate being used for the HTTPS connection from the server:
Close SOAtest and/or Virtualize if it is currently open.
- Identify the location of the server certificate used for the HTTPS connection.
- Ensure that this certificate’s COMMON NAME parameter contains both the server’s machine name and the subdomain (for example,
Copy the certificate to the following location:
This directory should contain a
cacertsfile in which the trusted certificates are stored.
Execute a command of the following format:
keytool -import -alias <certificate_alias> -file <certificate_file> -keystore cacerts
For example, if your certificate file is named
test.cert, you would execute the following command from the
keytool -import -alias serverTrustCert -file test.cert -keystore cacerts
This will import the certificate into the cacerts file with the alias "s
- When prompted to enter a keystore password, enter
- When asked whether you want to trust this certificate, enter
yes. You will then see a message indicating that the certificate has been added to the keystore.
- (Optional) Verify that the certificate has been added to the keystore by entering the following command, then checking the file that opens:
keytool -list -keystore cacerts
Launch SOAtest or Virtualize and try to access the service again.
If you experience issues working with services deployed over HTTS, verify the following:
- Your server is running.
- You used the full name of the machine when trying to communicate with this HTTPS.
- The server certificate was created with the full name.
- The name on the certificate is identical to the name the client tried to access it with.
If you cannot satisfy the above requirements (for example, if you don’t have necessary permissions):
- Choose Parasoft> Preferences to open the Preferences dialog.
- Select Parasoft> Security from thace left pane of the Preferences dialog, then select the Trust all certificates option in the right pane.
- Click OK or Apply to apply this change.
SOAtest/Virtualize will then try to access any WSDL you specify, regardless of any problems with the certificate. However,SOAtest/Virtualize will still try use the certificate while trying to send SOAP messages because it is required to do so.
You must add certificates to cacerts files on load test slave machines as well as on the master machine. Otherwise, SSL connections will not work when running a load test with slave machines.
If none of these procedures solve your problem, contact Parasoft in one of the ways described in Contacting Parasoft Technical Support.
Debugging SSL Issues
SOAtest and Virtualize run on a standard JVM. To show the SSL/TLS handshake details and help identify causes of SSL connection problems, enable JVM network and SSL debugging:
- Open a command line console and navigate to the SOAtest installation directory.
- Start the executable with the arguments:
-J-Dssl.debug=true -J-Djavax.net.debug=all -consolelog
SOAtest/Virtualize will start normally, but whenever SSL connections are made, debugging output will be printed on the console. If you wish to save the trace output to a file (for example,
output.txt), you may append the following to the end of the command :
For more information about managing keys and certificates using the Java keytool, see the Oracle Java documentation. refer to:
- Linux, Mac:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
Troubleshooting Client Authentication
If you are sending a request using client-side SSL (two-way) and the connections fails or the server returns a 401 (unauthorized) or 403 (forbidden) HTTP response, then the SSL debug log may contain the following:
*** ServerHelloDone [read] MD5 and SHA1 hashes: len = 4 0000: 0E 00 00 00 .... Warning: no suitable certificate found - continuing without client authentication
CertificateRequest message, which should be printed earlier in the output, to determine why the client's certificate was considered unsuitable. This message contains details about the request received from the server:
*** CertificateRequest Cert Types: RSA, ... Supported Signature Algorithms: SHA512withRSA, SHA256withRSA, SHA384withRSA, SHA1withRSA, ... Cert Authorities: <CN=GeoTrust ... <CN=VeriSign ... <CN=Go Daddy ... ...
CertificateRequest message declares requirements for selecting a client certificate based on the values specified in the
Supported Signature Algorithms, and
Cert Authorities fields. If the client certificate that was configured in the client's HTTP transport settings (under Parasoft> Preferences> Security> Client side SSL) does not match all of the requirements in the
CertificateRequest message, then the client's certificate will not actually be used and the connection will continue without client authentication.
In some cases, the client's certificate matches one of the requested
Cert Types and
Supported Signature Algorithms, but not the
Cert Authorities. This can happen if the keystore is missing the client certificate chain. The certificate chain is required for connecting the client's certificate to its issuer's certificate, then to any intermediate certificate authorities, and then to one of the
Cert Authorities requested by the server. If the certificate chain is missing then the client's keystore file needs to be rebuilt to include the missing certificate chain.
You can use the openssl command line tool to rebuild the client's keystore. The following openssl example commands will rebuild a client's keystore if the certificate file is "ssl-certificate-file.crt", the cert chain is "ssl-certificate-chain.crt", and the certificate's key "ssl-certificate-key.key":
# 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