有一個問題,我已經打了好幾天了——如何通過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
即據我了解,我仍然需要以某種方式添加證書,但是如何?我已經無法想象了。如果有人可以告訴我問題是什么或我的代碼有什么問題,請幫助:(
uj5u.com熱心網友回復:
如果突然有人面臨類似的問題,那么這里就是解決方案。您必須有 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());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498207.html
