2014-07-21 106 views
-1

我是SSL和安全新手,我想爲使用SSL的Web服務構建Java客戶端。服務器正確配置爲使用雙向SSL配置,但如何建立客戶..如何通過SSL構建Web服務客戶端

也彷彿春天有什麼這將是很好的..提前
感謝

回答

0

得到的東西的工作,你必須創建一個客戶端密鑰庫和信任,然後用這些商店定義的SSLContext,然後實例化的SSLSocketFactory產生的SSLSockets這樣的:

SSLContext sslcontext = SSLContexts.createDefault();   
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
      sslcontext, SSLConnectionSocketFactory.STRICT_HOSTNAME_VERIFIER); 

CloseableHttpClient httpClient = HttpClients.custom() 
     .setSSLSocketFactory(sslsf) 
     .build();  
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory()); 

你應該閱讀這http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html,瞭解它如何作品。
也是這個問題how to write java client and server applications that uses mutual ssl authentication between them?可能是有用的。

0

你不必對客戶端沒有什麼特別之處,只需在請求中使用HTTPS而不是HTTP。

+1

確實如此,除非您使用不在默認JVM密鑰庫內的證書(例如,由公司特定的AC自簽名或發出)或密鑰對,如果OP使用2就我所知,默認的JVM密鑰庫沒有SSL客戶端身份驗證材料。 然後,使事情工作可能涉及額外的步驟,例如將證書和密鑰添加到默認的JVM密鑰庫,或者構建/使用特別配置的SSLSocketFactory實例。 – GPI

+0

我不認爲這很簡單,你必須建立一個SSL會話,並提供你的證書到服務器一些如何 – monim

+0

認證配置在服務器端 – paul