我有这样的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 代码中防止这些事情发生?
提前致谢。
最佳答案
默认情况下,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);
}
关于java - 检查证书是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818800/