我有这样的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代码中阻止这类事情?
提前致谢。
答案 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);
}