当前位置: 首页 > 面试题库 >

是否有可能使Java忽略“信任库”,而只接受它获得的任何SSL证书?

乐城
2023-03-14
问题内容

我正在尝试编写一个使用javax.mail
API发送邮件的SSL客户端。我遇到的问题是服务器请求我使用SSL,但是服务器还配置了非标准SSL证书。我发现的网页说我需要将证书安装到信任库中。我不想这样做(我没有必要的权限。)

  1. 有没有办法让Java忽略证书错误并接受它?
  2. 失败了,有没有办法让信任库在我的程序中是本地的,而不是在整个JVM中都安装?

问题答案:

您需要创建一个伪造的TrustManager来接受所有证书,并将其注册为管理员。像这样:

public class MyManager implements com.sun.net.ssl.X509TrustManager {
  public boolean isClientTrusted(X509Certificate[] chain) { return true; }
  public boolean isHostTrusted(X509Certificate[] chain) { return true; }
  ...
}


com.sun.net.ssl.TrustManager[] managers =
  new com.sun.net.ssl.TrustManager[] {new MyManager()};

com.sun.net.ssl.SSLContext.getInstance("SSL").
       .init(null, managers, new SecureRandom());


 类似资料:
  • 问题内容: 我希望能够以编程方式在Java应用程序中访问所有受信任的根证书。 我当时在看密钥库接口,但我希望获得JRE隐式的受信任根列表。 这可以在任何地方访问吗? 问题答案: 有一个示例显示了如何获取一组根证书,并通过它们进行遍历,这称为在密钥存储区中列出最受信任的证书颁发机构(CA)。这是经过稍微修改的版本,可打印出每个证书(在Windows Vista上测试)。

  • 问题内容: 我一直在研究从动态Web应用程序中提取信息的程序,该程序运行良好,直到我将tomcat服务器设置为使用具有自签名(因此,不受信任)证书的SSL。错误的堆栈跟踪为: 在Web浏览器中,当用户使用不受信任的证书访问HTTPS站点时,系统会提示用户警告,并要求他设置是否愿意继续进行操作;我想为我的命令行应用程序实现类似的功能…我承认我是套接字编程和网络领域的新手。解决这个问题的任何建议都会很

  • 似乎HttpClient/HttpClientHandler没有提供忽略不信任证书的选项,比如WebRequest使您能够忽略不信任证书(尽管使用)。 任何帮助都将不胜感激!

  • 我已经看到了一些使用X509TrustManager实现TrustManager的示例,尽管显然Java7不支持这些约定,X509TrustManager本身也被弃用。 感谢您的建议和任何在Java7上工作的代码示例。

  • 问题内容: 我需要与远程服务器创建Https连接,然后检索并验证证书。 我已经建立好连接: 但似乎方法未由类型定义。 那么,如何检索服务器证书链?我的理解是应该返回一个对象数组,并且该类具有可用于询问证书的方法。 我需要验证: 证书有效且受信任, 根据证书序列号检查“证书吊销列表分发点” 确保它没有过期, 检查证书中的URL是否与另一个URL(我已经检索到)匹配。 我迷路了,非常感谢您的帮助! 问