PKI证书导入

时间:2011-04-24 06:26:59

标签: import pki

当我使用https登录我的银行帐户时,在我输入登录信息之前,它只是服务器端SSL身份验证。我的浏览器在SSL会话期间根据服务器的证书信息进行服务器身份验证。我没有必要在我的浏览器中手动导入服务器证书作为可信证书。它只是在SSL交换期间在运行时发生。

另一方面,我还看到了一些应用程序,当您查看其安装指南时,必须手动导入证书(例如,使用keytool)。

问题是:如果在SSL会话开始时交换证书信息,则每一方都有足够的信息来验证另一方。为什么有些应用需要在客户端和服务器之间相互手动导入证书。是一方或双方认证。

基于以下回复的附加信息: 我指的是基于客户端 - 服务器模型安装商业软件的方案,客户端SSL身份验证已打开。我在私人网络中的机器A和2台客户机上安装了服务器。在安装期间,服务器在本地生成自签名证书。这两个客户也是如此。安装完成后,我被要求将客户端的证书复制到服务器计算机并手动将其作为可信证书导入。此外,将服务器证书复制到客户端计算机并将其导入到其受信任的存储中。他们在java keytool之上提供了一个包装工具来执行cert导入。 为什么此处需要手动导入?无论如何,客户端和服务器将在SSL握手期间交换证书信息并执行身份验证。同样,这些是自签名证书,CA也在这里。

2 个答案:

答案 0 :(得分:0)

SSL服务器的证书必须由证书颁发机构(CA)“担保”。您的浏览器(或其他程序)包含它信任的CA列表。如果您使用的某个网站未经认证,那么您必须导入其CA才能使验证成功。

任何合法网站(尤其是网上银行)都不应要求您使用“替代”CA.仅对您未发送超敏感数据的网站执行此操作。

答案 1 :(得分:0)

请注意,证书由证书颁发机构签名,因此它取决于您的浏览器信任的证书颁发机构。如果Web服务器发送由浏览器/应用程序信任且证书有效的证书颁发机构签名的证书,则不应发出任何警告。

另一方面,如果浏览器从Web服务器收到证书并且它不信任签署该证书的证书颁发机构,则浏览器将采取一些操作 - 至少,它应该警告您这个。当您从网站导入证书时,您实际上是在告诉您的浏览器您已决定信任该证书,而不是签署该证书的人。

编辑:同样的原因适用:密钥库保留了受信任的证书颁发机构及其相应证书的列表。 PKI的整个概念是具有可信 CA的层次结构,为其他方发出签名证书。如果证书是自签名的,那么就没有有效的信任链 - Java如何知道证书没有被攻击者伪造?

您假设客户端和Web服务器之间的连接是隐式信任的,因为证书是在SSL握手期间交换的。如果中间的人作为Web服务器而不是发送服务器证书,而是发送自己的证书怎么办?客户如何知道中间人收到的证书不值得信任?如果证书由受信任的CA签名,或者证书已作为受信任证书手动添加到密钥库,则客户端可以检查它是否应该信任该证书。