2011-03-09 105 views
2

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

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

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

我该如何自动执行此操作?我只是想让他们接受,并没有“证书错误”,并在IE浏览器中的URL栏变为“红色”。

我使用的是Tomcat 5.5。我也遵循了与Tomcat SSL教程相同的步骤http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html

在此先感谢。

+0

你可以得到已由根CA的自由http://www.startssl.com/签署证书 – 2011-03-10 03:40:17

+1

完全重复的http:/ /stackoverflow.com/questions/5252800 - 当你没有得到你喜欢的答案时,不要只是重新发布问题。 – 2011-03-10 16:50:04

回答

4

Java 6提供了一个名为SunMSCAPI的加密提供程序来访问Windows加密库API。此提供程序实现包含所有Trust锚点证书的密钥库“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

+0

注意:由于Java中存在错误,所以在JDK7以下的Java 64位版本中不起作用。详情:https://forums.oracle.com/forums/thread.jspa?threadID=1526024 – 2011-09-17 02:49:38

1

想一想。如果这是可能的,那么会阻止任何欺诈网站做同样的事情,并使其看起来像他们的网站是可信的?重点在于用户必须确认证书安装。

+1

这正是我想要的。用户必须点击OK。但是这并没有将证书放置在受信任的根证书颁发机构商店中。相反,我不得不导出/导入证书。是否有一个单击确定按钮,可以为用户执行所有这些步骤? – Marquinio 2011-03-10 04:17:43

1

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

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

相关问题