Apache HTTP Client 5提供了两个选项来实现HTTPS连接:信任商店和密钥库。TrustStore是包含用于验证服务器证书的受信任证书的存储库。KeyStore是包含客户端证书和私钥的存储库,用于进行客户端身份验证。以下是添加证书到TrustStore和KeyStore的示例:
添加证书到客户端信任商店:
InputStream stream = new FileInputStream("path/to/certificate.crt");
KeyStore truststore = KeyStore.getInstance(KeyStore.getDefaultType());
truststore.load(null, null);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate ca = cf.generateCertificate(stream);
truststore.setCertificateEntry("alias", ca);
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(truststore, null).build();
CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).build();
添加客户端证书和密钥到KeyStore:
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(null, null);
InputStream stream = new FileInputStream("path/to/client.p12");
keystore.load(stream, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keystore, "password".toCharArray());
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(keystore,"password".toCharArray()).build();
CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).build();