2017-02-14 5 views
0

RESTAssured를 사용하여 HTTP 호출을하려고합니다. 나는 .pfx 인증서를 사용하고 있습니다. 그러나 전화가 악수 실패로 끝나고 있습니다. 아래는 내가 사용하고있는 코드입니다.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(); 

답변

0

작은 수정으로 문제를 해결할 수있었습니다.

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();