2

我创建了一个自签名证书,但浏览器告诉我“此 CA 根证书不受信任。要启用信任,请在受信任的根证书颁发机构存储中安装此证书”。

我通过进入 IE --> Internet 选项 --> 内容 --> 证书 --> 等来做到这一点...我实际上必须导出自签名证书,然后将其导入受信任的根证书。只有在证书位于用户机器的根存储下之后,IE 才不会显示任何警告。

这将部署在生产环境中,因此让用户手动执行上述步骤是不可接受的。

我怎样才能自动做到这一点?我只是希望他们接受并且没有那个“证书错误”并且在 IE 中将 URL 栏变成“红色”。

我正在使用Tomcat 5.5。我还遵循了与 Tomcat SSL How To Tutorial http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html中相同的步骤

提前致谢。

4

3 回答 3

4

Java 6 提供了一个名为 SunMSCAPI 的密码提供程序来访问 Windows 密码库 API。此提供程序实现了一个包含所有信任锚证书的密钥库“Windows-Root”。

可以在此密钥库中插入证书。

KeyStore root = KeyStore.getInstance("Windows-ROOT");
root.load(null);
/* certificate must be DER-encoded */
FileInputStream in = new FileInputStream("C:/path/to/root/cert/root.der");
X509Certificate cacert = (X509Certificate)CertificateFactory.getInstance("X.509").generateCertificate(in);
root.setCertificateEntry("CACert Root CA", cacert);

如果确认,将提示用户。如果操作被用户取消,则抛出 KeyStoreException。

可以在此处找到有关提供程序的一些技术说明:http: //download.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunMSCAPI

于 2011-03-13T07:38:27.997 回答
1

想想看。如果这是可能的,什么会阻止任何欺诈性网站做同样的事情并让它看起来像他们的网站是受信任的?重点是用户必须确定证书安装。

于 2011-03-10T02:44:47.040 回答
1

首先,这样做的可能性会危及用户的安全,所以这将是一个安全漏洞,所以不,没有简单的方法可以做到这一点。

其次,不同的软件有不同的证书存储。微软和 Chrome 浏览器使用 CryptoAPI 商店,Firefox 有它自己的商店(Chrome 也可以使用 Firefox 的一个 AFAIK)。Adobe 的软件有它自己的商店(除了 CryptoAPI 之一)。

于 2011-03-10T16:45:21.830 回答