我想使用Java将文件上传到HTTPS服务器。
服务器不是一个开放的URL因此我需要一个客户端证书来建立连接。
我有.pem , .jks , .pkcs12
个客户端证书文件。
任何人都可以建议我如何在我的应用程序中使用此证书文件来建立通信吗? 我是否需要使用所有3个证书文件?
答案 0 :(得分:1)
.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应使用密钥库中的客户端证书来获取所需的请求。