2012-12-11 201 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