2012-12-11 249 views
0

我有java代碼是這樣的:檢查證書是否有效與否

 URL url = new URL(endPoint); 
     String encoding = Base64.encodeBase64String(this.key.getBytes()); 

     connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("POST"); 
     connection.setDoOutput(true); 

被打開SSL連接。可以說endPoint確實使用了自簽證書並充當原始網站。是否有可能在java代碼中防止這些東西?

在此先感謝。

回答

2

默認情況下,Java中的SSL實施將針對Java VM中包含的可信證書頒發機構列表進行檢查。除非您擴展默認信任庫,否則在運行時指定不同的信任庫或提供自己的TrustManager和/或HostnameVerifier的實現,否則您將無法與具有自簽名證書的服務器建立SSL連接。

如果你因爲某些原因需要訪問後,你已經建立連接的服務器證書,您可以從HttpsURLConnection這樣得到這些:

URL url = new URL("https://www.google.com"); 
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
conn.connect(); 

for(Certificate crt : conn.getServerCertificates()) { 
    System.out.println(crt); 
} 
+0

感謝您的信息。 。 。但是我得到這樣的錯誤'方法getServerCertificates()未定義類型HttpsURLConnection' – sriram