使用客户端证书建立到 HTTPS 的连接
Establishing connection to HTTPS using client certificates
我想使用 Java 将文件上传到 HTTPS 服务器。
服务器不是开放的 URL 因此我需要一个客户端证书来建立连接。
我有 .pem , .jks , .pkcs12
个客户端证书文件。
任何人都可以建议我如何在我的应用程序中使用此证书文件来建立通信吗?
我需要使用所有 3 个证书文件吗?
.jks
文件是 Java 密钥库。它应该包含正确的客户端证书(可能还有来自证书链的中间证书)。
我假设您要编写一个将文件上传到 HTTPS 服务器的客户端?然后,您应该将 .jks
文件与带有(假设是 apache)HttpClient
的客户端证书一起使用。
您需要创建一个 SSLContext
并加载密钥库
SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(new File("keystore", "yourPassword".toCharArray(), new TrustSelfSignedStrategy()).build();
然后你必须把 sslContext
放在 SSLConnectionSocketFactory
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
然后最终构建 HttpClient
HttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
完成所有这些步骤后,httpClient 应该使用密钥库中的客户端证书来满足您的要求。
我想使用 Java 将文件上传到 HTTPS 服务器。
服务器不是开放的 URL 因此我需要一个客户端证书来建立连接。
我有 .pem , .jks , .pkcs12
个客户端证书文件。
任何人都可以建议我如何在我的应用程序中使用此证书文件来建立通信吗? 我需要使用所有 3 个证书文件吗?
.jks
文件是 Java 密钥库。它应该包含正确的客户端证书(可能还有来自证书链的中间证书)。
我假设您要编写一个将文件上传到 HTTPS 服务器的客户端?然后,您应该将 .jks
文件与带有(假设是 apache)HttpClient
的客户端证书一起使用。
您需要创建一个 SSLContext
并加载密钥库
SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(new File("keystore", "yourPassword".toCharArray(), new TrustSelfSignedStrategy()).build();
然后你必须把 sslContext
放在 SSLConnectionSocketFactory
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
然后最终构建 HttpClient
HttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
完成所有这些步骤后,httpClient 应该使用密钥库中的客户端证书来满足您的要求。