java - 检查证书是否有效

标签 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 代码中防止这些事情发生?

提前致谢。

最佳答案

默认情况下,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/

相关文章:

ruby-on-rails - Rails 3 搜索是否容易受到 SQL 注入(inject)攻击?

spring - 将 .crt 添加到 Spring Boot 以启用 SSL

java - OBJ 加载器索引越界

Java - Junit 测试 OOP 类

java - Java 中泛型的未知编译错误

apache - Play Framework : Secure WebSocket with Apache

web-services - 在 Azure Web 服务 (API) 上强制执行 HTTPS 重定向

java - 如何在 Java 中为日期添加天数

objective-c - 提示用户输入密码的正确方法是什么?

Android - 保存数据的安全性