0

我有一个要求,我需要在 SSL 上运行基于 Java 的 HTTP 服务器并从浏览器连接到该服务器。我还需要确保浏览器不显示自签名证书的安全异常。

我做了以下 -

  1. 使用 Java keytool -keygen 生成了一个 JKS 密钥库。
  2. 使用 keytool -importkeystore 将该密钥库作为 PKCS12 p12 文件导入。
  3. 将 p12 文件加载到 X509Certificate2 对象中,并将其添加到 Root 和 CertificateAuthority

    X509Store store5 = new X509Store(StoreName.Root, StoreLocation.LocalMachine); store5.Open(OpenFlags.ReadWrite); store5.Add(cert); store5.Close(); X509Store store2 = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine); store2.Open(OpenFlags.ReadWrite); store2.Add(cert); store2.Close();

  4. 从 JKS 密钥库中导出了一个证书文件。

  5. 将该 .cer 文件添加到 Java 的 cacerts 中。

现在,当我运行 HTTP 服务器时,它会选择证书并提供 HTTPS 请求,但浏览器仍将站点显示为不受信任。

4

2 回答 2

1

当然这是不可能的。浏览器错误消息的全部目的是提醒用户该网站正在使用不安全的证书。

将证书请求发送到 CA 之后。您应该将 CA 证书与两个或多个链接(连接)证书的“捆绑包”打赌,然后将其安装到 jks(java 密钥库)中,浏览器将接受您的网站作为安全

您可以通过您最喜欢的搜索引擎获得有关此主题的大量资源...

于 2016-08-01T09:10:22.147 回答
1

Nitin ,这里的选项是安装您在浏览器上生成的证书。你没有指定哪个浏览器,我以IE为例。您可以导入证书。

请注意:我将它们导入到受信任的商店,因为我知道我创建了它们并且我信任证书的颁发者。永远不要对不受信任的第 3 方网站这样做。此外,如果您信任它,您可能希望将该站点添加为安全性较低的受信任站点

在此处输入图像描述

于 2016-08-01T09:13:29.227 回答