我有一个要求,我需要在 SSL 上运行基于 Java 的 HTTP 服务器并从浏览器连接到该服务器。我还需要确保浏览器不显示自签名证书的安全异常。
我做了以下 -
- 使用 Java keytool -keygen 生成了一个 JKS 密钥库。
- 使用 keytool -importkeystore 将该密钥库作为 PKCS12 p12 文件导入。
将 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();
从 JKS 密钥库中导出了一个证书文件。
- 将该 .cer 文件添加到 Java 的 cacerts 中。
现在,当我运行 HTTP 服务器时,它会选择证书并提供 HTTPS 请求,但浏览器仍将站点显示为不受信任。