重启-使用.pfx证书进行https呼叫

重启-使用.pfx证书进行https呼叫,https,rest-assured,Https,Rest Assured,我正在尝试使用RESTAssured进行HTTPs呼叫。我使用的是.pfx证书。但通话以握手失败告终。下面是我正在使用的代码 FileInputStream instream1=null; FileInputStream instream2=null; KeyStore trustStore=null; KeyStore keyStore=null; instream1 = new FileInputStream(new File(keystore))

我正在尝试使用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();

我只做了一点小小的修改就解决了这个问题

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

但是,上述操作对我不起作用,删除
.relaxedhttpsvalization()
行使其起作用。从深入到放心代码,似乎
relaxedhttpsvalization()
方法基本上关闭了所有SSL,并删除了前面几行中设置的密钥库。上述方法对我不起作用,但是,删除
.relaxedhttpsvalization()
行使它起作用。从深入研究Rest-Assured代码来看,
relaxedhttpsvidation()
方法基本上关闭了所有SSL,并删除了前面几行中设置的密钥库。