我创建了一个自签名证书,但浏览器告诉我“此CA根证书不受信任。要启用信任,请在受信任的根证书颁发机构存储中安装此证书”。
我进入IE浏览器 - >互联网选项 - >内容 - >证书 - >等...我实际上必须导出自签名证书,然后将其导入受信任的根证书。只有在证书位于用户机器的ROOT商店下面之后,IE才显示任何警告。
这将部署在生产环境中,因此让用户手动执行上述步骤是不可接受的。
我该如何自动执行此操作?我只是希望他们接受并且没有“证书错误”并且在IE中将URL栏变为“RED”。
我正在使用Tomcat 5.5。我也遵循了Tomcat SSL How To Tutorial http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html
中的相同步骤提前致谢。
答案 0 :(得分:4)
Java 6提供了一个名为SunMSCAPI的加密提供程序来访问Windows加密库API。此提供程序实现了一个包含所有Trust Anchors证书的密钥库“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
答案 1 :(得分:1)
想一想。如果这是可能的,那么什么会阻止任何欺诈性网站做同样的事情并让它看起来像他们的网站是可信的?重点是用户必须确认证书安装。
答案 2 :(得分:1)
首先,这样做的可能性会影响用户的安全性,因此这将是一个安全漏洞,所以不,没有简单的方法可以做到这一点。
接下来,不同的软件具有不同的证书库。微软和Chrome浏览器使用CryptoAPI商店,Firefox拥有自己的商店(Chrome也可以使用firefox的一个AFAIK)。 Adobe的软件拥有自己的商店(除了CryptoAPI之外)。