检查证书是否有效

时间:2012-12-11 10:55:57

标签: java security ssl

我有这样的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代码中阻止这类事情?

提前致谢。

1 个答案:

答案 0 :(得分: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);
}