java restAssured等同于cURL证书选项

问题描述 投票:3回答:1

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

--key /path/to/client-private.key
--cert /path/to/client-cert.pem
--cacert /path/to/caroot.pem

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

如果有帮助,我也可以使用rootca.keystorerootca.truststore

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

java ssl curl ssl-certificate rest-assured
1个回答
0
投票

在REST保证下,无法将密钥和证书文件直接作为参数。目前确保的REST可以接受密钥库和信任库。因此,您必须首先创建那些密钥,然后将密钥/证书放入其中,如下所示。

生成密钥库

openssl pkcs12 -export -inkey client-private.key -in client-cert.pem -out keystore.p12

生成信任对象

keytool -import -alias ca -file client-cert.pem -keystore truststore.jks

您的请求应如下所示:

RestAssured.given()
    .spec(new RequestSpecBuilder()
            .setBaseUri(HOSTNAME_URI)
            .setAuth(RestAssured
                    .certificate(
                            "truststore.jks",
                            truststorePassword,
                            "keystore.p12",
                            keystorePassword,
                            CertificateAuthSettings
                                    .certAuthSettings()
                                    .keyStoreType("pkcs12")
                                    .trustStoreType("pkcs12")
                                    .allowAllHostnames())).build())
            .when()
            .log().all()
            .header("Content-Type","application/json") //assumming you want to send Json via POST request
            .body(JsonUtils.toJsonString(yourJsonString))
            .contentType(ContentType.JSON)
            .port(443)
            .post(RELATIVE_PATH_TO_YOUR_ENDPOINT);

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

您可以使用:

openssl s_client -showcerts -connect YOUR_HOST:443  </dev/null > host_certificate.crt

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

keytool -importcert -file host_cert.crt -keystore trustStore.jks -alias "hostCertificate"
© www.soinside.com 2019 - 2024. All rights reserved.