2016-11-08 80 views
0

我想使用Java將文件上載到HTTPS服務器。 服務器不是一個開放的URL,因此我需要客戶端證書來建立連接。 我有.pem , .jks , .pkcs12客戶端證書文件。使用客戶端證書建立與HTTPS的連接

任何人都可以建議我如何在我的應用程序中使用此證書文件來建立通信? 我是否需要使用全部3個證書文件?

+1

可能出現[HTTPS/SSL上的Java客戶端證書]重複(http://stackoverflow.com/questions/875467/java-client-certificates-over-https-ssl) – Matthias

回答

1

.jks文件是Java Keystore。它應該包含正確的客戶端證書(也可能包含證書鏈中的中間證書)。

我假設你要編寫一個將文件上傳到HTTPS服務器的客戶端?然後你應該使用帶有客戶端證書的.jks文件(比如說apache)HttpClient

你需要創建一個SSLContext並加載密鑰庫

SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(new File("keystore", "yourPassword".toCharArray(), new TrustSelfSignedStrategy()).build(); 

然後,你必須把sslContextSSLConnectionSocketFactory

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); 

然後終於打造HttpClient

HttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); 

完成這些步驟後httpClient應該使用您的密鑰庫中的客戶端證書來滿足您的要求。

相關問題