【问题标题】:Can I create self-signed certificate in Java which will be automatically trusted by web browsers?我可以在 Java 中创建 Web 浏览器自动信任的自签名证书吗?
【发布时间】:2010-11-21 00:57:03
【问题描述】:

我已经使用 keytool 为我的 Java 应用程序生成了一个自签名证书。但是,当我在浏览器中访问该站点时,它总是会弹出一条警告-说该站点不拥有该证书-有没有办法自行签署/修改证书,所以我不会在a中收到这些警告浏览器?服务器和浏览器都位于同一主机上,我使用“http://localhost/”导航到该站点。我不想向浏览器添加异常,因为我有在大型构建农场上运行的测试,因此向所有构建机器上的所有浏览器添加异常是过度的。

【问题讨论】:

    标签: java ssl ssl-certificate self-signed


    【解决方案1】:

    不,你不能。您不妨问“如何为 hsbc.com 制作假证书?”

    有两种方法可以让浏览器接受证书:

    • 从受信任的机构购买域证书(这意味着向该机构证明您拥有该域),然后将该域用作您的测试服务器的名称
    • 将您的签名证书安装到浏览器中,以便您有效地成为该浏览器的受信任机构。

    如果不接触浏览器,就没有其他方法可以做到 - 如果互联网要保持安全,怎么可能?

    【讨论】:

    • @Corehpf - 你想要一个富有想象力的答案还是真相?没有办法让浏览器接受自签名证书或由非根 CA 证书签名的证书......除了在浏览器中安装它们或 CA 证书。
    【解决方案2】:

    您还可以使用 OpenSSL 或您的 Java 工具设置自签名证书颁发机构 (CA)。然后,您可以使用该 CA 签署许多服务器证书。

    您仍然需要在所有访问您的测试服务器的客户端上手动信任您的自签名 CA,但至少您只需要信任一个根 CA,而不是一堆单独的自签名服务器证书。

    另一种选择是查看CAcert

    【讨论】:

    • RichieHindle 是正确的。此方法不会消除浏览器中的警告。
    【解决方案3】:

    您为 localhost 还是为 test.textbox.com 创建的证书?如果您为 FQDN test.textbox.com 创建了证书,那么只要证书已正确签名,您就需要通过这种方式访问​​服务器以免收到这些错误。您不能为 FQDN 生成证书,然后使用 IP 或别名 (localhost) 访问它,而不会被警告事情不正确匹配。还是我误解了你的问题?

    【讨论】:

    • 注意:显然 test.testbox.com 只是我用来做这个的一个例子。
    • 他正在做自签名证书(这意味着它们不会追溯到任何知名的 CA),因此根据定义,他不能让它们自动被接受。要让浏览器自动接受证书,它必须追溯到浏览器知道的 CA。
    • 是的,但是抱怨站点不拥有证书的错误表明创建证书的主机名和他用来访问该站点的任何东西都是两个不同的东西。他说他使用的是本地主机,我打赌证书是服务器的实际主机名。这将在大多数浏览器中引发安全问题。
    【解决方案4】:

    改为为“localhost”制作证书。它需要与您在 URL 中的主机名匹配。

    您仍然会因为证书不受信任而烦恼,但这是另一个问题。

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2011-09-28
      • 2014-06-04
      相关资源
      最近更新 更多