0
我想使用Java將文件上載到HTTPS服務器。 服務器不是一個開放的URL,因此我需要客戶端證書來建立連接。 我有.pem , .jks , .pkcs12
客戶端證書文件。使用客戶端證書建立與HTTPS的連接
任何人都可以建議我如何在我的應用程序中使用此證書文件來建立通信? 我是否需要使用全部3個證書文件?
我想使用Java將文件上載到HTTPS服務器。 服務器不是一個開放的URL,因此我需要客戶端證書來建立連接。 我有.pem , .jks , .pkcs12
客戶端證書文件。使用客戶端證書建立與HTTPS的連接
任何人都可以建議我如何在我的應用程序中使用此證書文件來建立通信? 我是否需要使用全部3個證書文件?
.jks
文件是Java Keystore。它應該包含正確的客戶端證書(也可能包含證書鏈中的中間證書)。
我假設你要編寫一個將文件上傳到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應該使用您的密鑰庫中的客戶端證書來滿足您的要求。
可能出現[HTTPS/SSL上的Java客戶端證書]重複(http://stackoverflow.com/questions/875467/java-client-certificates-over-https-ssl) – Matthias