java restAssured 等同于 cURL 证书选项

Jef*_*eff 5 java ssl curl ssl-certificate rest-assured

在我的环境中,为了发出成功的 cURL 命令,我必须包含以下指向已下载文件的选项:

--key /path/to/client-private.key
--cert /path/to/client-cert.pem
--cacert /path/to/caroot.pem
Run Code Online (Sandbox Code Playgroud)

我无法找到有关如何通过利用这些文件的 restAssured java 库进行等效 REST 调用的信息。我相信我需要打电话,RestAssured.config().sslConfig(someConfig);但不知道如何建立someConfig

我也有机会获得rootca.keystorerootca.truststore是否有帮助。

任何帮助都会很棒!谢谢!

wbr*_*cki 1

在 REST-assured 中,无法将密钥和证书文件直接作为参数。目前放心可以接受密钥和信任存储。因此,您必须首先创建它们并将密钥/证书放入其中,如下所示。

生成密钥库

openssl pkcs12 -export -inkey client-private.key -in client-cert.pem -out keystore.p12
Run Code Online (Sandbox Code Playgroud)

生成信任库

keytool -import -alias ca -file caroot.pem -keystore truststore.jks
Run Code Online (Sandbox Code Playgroud)

您的请求应如下所示:

openssl pkcs12 -export -inkey client-private.key -in client-cert.pem -out keystore.p12
Run Code Online (Sandbox Code Playgroud)

即使设置了allowAllHostnames(),也值得将主机证书导入信任库(否则您可能会得到InvalidCertificationPathException)。

你可以这样做:

openssl s_client -showcerts -connect YOUR_HOST:443  </dev/null > host_certificate.crt
Run Code Online (Sandbox Code Playgroud)

然后将 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 之间的行提取到一个新文件中,我们将其命名为 host_cert.crt。之后将此证书导入到现有的信任库中。

keytool -importcert -file host_cert.crt -keystore trustStore.jks -alias "hostCertificate"
Run Code Online (Sandbox Code Playgroud)