[英]SSL connect certificate trouble with Rest Assured
有一个问题,我已经打了好几天了——如何通过Rest Assured建立SSL连接? 这是我的尝试,但使用以下代码:
public class ApiTests {
@BeforeAll
static void setUp() {
RestAssured.baseURI = "my host";
}
@Test
void createUserTest() throws Exception {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
String keyStorePass = "my pass";
try (FileInputStream fis = new FileInputStream("D:\\Idea_projects\\TestApi\\src\\test\\resources\\my_cert.p12")) {
keyStore.load(fis, keyStorePass.toCharArray());
}
given()
.keyStore(keyStore)
.trustStore("C:\\Program Files\\Java\\jdk-11.0.13\\lib\\security\\cacerts", "changeit")
.contentType(JSON)
.when()
.post("users")
.then()
.statusCode(200)
.body("name", is("Valentin"))
.body("job", is("qa"));
}
}
抛出异常:
No signature of method: io.restassured.config.SSLConfig.keyStore() is applicable for argument types: (java.security.KeyStore) values: [java.security.KeyStore@504497fa]
Possible solutions: keyStore(java.lang.String), keyStore(java.io.File, java.lang.String), keyStore(java.lang.String, java.lang.String), getKeyStore(), trustStore(java.security.KeyStore)
groovy.lang.MissingMethodException: No signature of method: io.restassured.config.SSLConfig.keyStore() is applicable for argument types: (java.security.KeyStore) values: [java.security.KeyStore@504497fa]
Possible solutions: keyStore(java.lang.String), keyStore(java.io.File, java.lang.String), keyStore(java.lang.String, java.lang.String), getKeyStore(), trustStore(java.security.KeyStore)
我尝试使用轻松的HTTPSValidation(),但它说:
Received fatal alert: bad_certificate
javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
即据我了解,我仍然需要以某种方式添加证书,但是如何? 我已经无法想象了。 如果有人可以告诉我问题是什么或我的代码有什么问题,请帮助:(
如果突然有人面临类似的问题,那么这里就是解决方案。 您必须有 2 个证书:服务器和客户端。 然后使用以下命令将服务器一放在 Java 的 cacerts 存储库中:
keytool -importcert -storetype PKCS12 -keystore trustStore.p12 -storepass 密码 -alias mpzCA -file root.crt -noprompt
然后,在代码中,执行以下操作:
public class DealerProtocolTests {
@Test
void sendDealerRequest() throws Exception {
RestAssured.config = RestAssured.config().sslConfig(
new SSLConfig()
.trustStore("src/test/resources/certificate/SERVER.p12", "password")
.keyStore("src/test/resources/certificate/CLIENT.p12", "password"));
Response response = null;
response =
given()
.config(config)
.spec(xmlSpec)
.basePath("/xmlInteface")
.body("")
.when()
.get()
.then()
.statusCode(200)
.log().all()
.extract().response();
System.out.println(response.prettyPrint());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.