RESTAssured - 使用 .pfx 证书进行 https 调用
RESTAssured - use .pfx certificate for https call
我正在尝试使用 RESTAssured 进行 HTTPs 调用。我使用的是 .pfx 证书。但通话以握手失败告终。下面是我正在使用的代码。
FileInputStream instream1=null;
FileInputStream instream2=null;
KeyStore trustStore=null;
KeyStore keyStore=null;
instream1 = new FileInputStream(new File(keystore));
keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(instream1, keystorepwd.toCharArray());
instream2 = new FileInputStream (new File(truststore));
trustStore = KeyStore.getInstance("jks");
trustStore.load(instream2, truststorepwd.toCharArray());
X509HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
org.apache.http.conn.ssl.SSLSocketFactory lSchemeSocketFactory=null;
lSchemeSocketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, keystorepwd);
lSchemeSocketFactory.setHostnameVerifier(hostnameVerifier);
RestAssured.config = RestAssured.config().sslConfig(new SSLConfig().with().sslSocketFactory(lSchemeSocketFactory).and().allowAllHostnames());
response = RestAssured.given()
.relaxedHTTPSValidation()
.contentType("application/json")
.header("Accept-Encoding","gzip,deflate")
.body(\body)
.post()
.then().log().all()
.assertThat().statusCode(201)
.assertThat().extract().response();
我稍加修改就解决了这个问题。
FileInputStream instream1=null;
KeyStore keyStore=null;
instream1 = new FileInputStream(new File(keystore));
keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(instream1, keystorepwd.toCharArray());
X509HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
org.apache.http.conn.ssl.SSLSocketFactory lSchemeSocketFactory=null;
lSchemeSocketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, keystorepwd);
lSchemeSocketFactory.setHostnameVerifier(hostnameVerifier);
RestAssured.config = RestAssured.config().sslConfig(new SSLConfig().with().sslSocketFactory(lSchemeSocketFactory).and().allowAllHostnames());
response = RestAssured.given()
.relaxedHTTPSValidation()
.contentType("application/json")
.header("Accept-Encoding","gzip,deflate")
.body(\body)
.post()
.then().log().all()
.assertThat().statusCode(201)
.assertThat().extract().response();
我正在尝试使用 RESTAssured 进行 HTTPs 调用。我使用的是 .pfx 证书。但通话以握手失败告终。下面是我正在使用的代码。
FileInputStream instream1=null;
FileInputStream instream2=null;
KeyStore trustStore=null;
KeyStore keyStore=null;
instream1 = new FileInputStream(new File(keystore));
keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(instream1, keystorepwd.toCharArray());
instream2 = new FileInputStream (new File(truststore));
trustStore = KeyStore.getInstance("jks");
trustStore.load(instream2, truststorepwd.toCharArray());
X509HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
org.apache.http.conn.ssl.SSLSocketFactory lSchemeSocketFactory=null;
lSchemeSocketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, keystorepwd);
lSchemeSocketFactory.setHostnameVerifier(hostnameVerifier);
RestAssured.config = RestAssured.config().sslConfig(new SSLConfig().with().sslSocketFactory(lSchemeSocketFactory).and().allowAllHostnames());
response = RestAssured.given()
.relaxedHTTPSValidation()
.contentType("application/json")
.header("Accept-Encoding","gzip,deflate")
.body(\body)
.post()
.then().log().all()
.assertThat().statusCode(201)
.assertThat().extract().response();
我稍加修改就解决了这个问题。
FileInputStream instream1=null;
KeyStore keyStore=null;
instream1 = new FileInputStream(new File(keystore));
keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(instream1, keystorepwd.toCharArray());
X509HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
org.apache.http.conn.ssl.SSLSocketFactory lSchemeSocketFactory=null;
lSchemeSocketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, keystorepwd);
lSchemeSocketFactory.setHostnameVerifier(hostnameVerifier);
RestAssured.config = RestAssured.config().sslConfig(new SSLConfig().with().sslSocketFactory(lSchemeSocketFactory).and().allowAllHostnames());
response = RestAssured.given()
.relaxedHTTPSValidation()
.contentType("application/json")
.header("Accept-Encoding","gzip,deflate")
.body(\body)
.post()
.then().log().all()
.assertThat().statusCode(201)
.assertThat().extract().response();