简体   繁体   English

如何使用 Rest 确保使用.crt 证书和 public.key 令牌发送 HTTPS 请求

[英]How to send HTTPS request with Rest Assured using .crt certificate and public .key token

I need to send https request with REST assured having client .crt certificate and public key .key How do I send request if my certificate and key in project like我需要发送 https 请求,并确保 REST 具有客户端.crt证书和公钥.key如果我的证书和项目中的密钥像

"src/test/resources/certificate.crt"
"src/test/resources/key.key"
String clientCertificatePath = "certs/ClientCertificate.p12";
String trustStorePath = "C:/Program Files/Java/jre1.8.0_91/lib/security/cacerts";
String trustStorePassword = "changeit"; // default trust store password

KeyStore clientStore = KeyStore.getInstance("PKCS12");
clientStore.load(new FileInputStream(clientCertificatePath), clientPassword.toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientStore, clientPassword.toCharArray());
KeyManager[] kms = kmf.getKeyManagers();

KeyStore trustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream(trustStorePath), trustStorePassword.toCharArray());

TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
TrustManager[] tms = tmf.getTrustManagers();

SSLContext sslContext = null;
sslContext = SSLContext.getInstance("TLS");
sslContext.init(kms, tms, new SecureRandom());

SSLSocketFactory lSchemeSocketFactory=null;

lSchemeSocketFactory = new SSLSocketFactory(clientStore, clientPassword, trustStore);

// configure Rest Assured
RestAssured.config = RestAssured.config().sslConfig(sslConfig().with().sslSocketFactory(lSchemeSocketFactory).and().allowAllHostnames());
 String response = RestAssured
        .given()
        .trustStore("src/test/resources/certificate.crt", "paasword")
        .when()
        .contentType(MediaType.APPLICATION_JSON)
        .accept(MediaType.APPLICATION_JSON)
        .header("Authorization", authHeader)
        .baseUri("https://server.us.oracle.com:55898")
        .queryParam("name", args)
        .get("/validendpoint").prettyPrint();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM