Import PKI证书导入

Import PKI证书导入,import,pki,Import,Pki,当我使用https登录到我的银行帐户时,在输入登录信息之前,这只是服务器端SSL身份验证。我的浏览器在SSL会话期间根据来自服务器的证书信息执行服务器身份验证。我不必手动将服务器证书作为可信证书导入浏览器。它只发生在SSL交换期间的运行时 另一方面,我也看到过一些应用程序,当您查看它们的安装指南时,必须手动导入证书(例如使用keytool) 问题是:如果在SSL会话开始时交换证书信息,则每一方都有足够的信息来验证另一方。为什么有些应用程序需要在客户端和服务器之间手动导入彼此的证书。无论是其中一方

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

另一方面,我也看到过一些应用程序,当您查看它们的安装指南时,必须手动导入证书(例如使用keytool)

问题是:如果在SSL会话开始时交换证书信息,则每一方都有足够的信息来验证另一方。为什么有些应用程序需要在客户端和服务器之间手动导入彼此的证书。无论是其中一方还是双方身份验证

基于以下回复的其他信息:
我指的是这样一个场景:我正在安装一个基于客户机-服务器模型的商业软件,并启用了客户端SSL身份验证。我将服务器安装在机器A上,将两个客户端安装在不同的机器上,所有这些都在我的专用网络中。在安装过程中,服务器在本地生成自签名证书。这两位客户也是如此。安装完成后,我被要求将客户端的证书复制到服务器机器,并手动将其作为受信任的证书导入。另外,将服务器证书复制到客户端计算机,并将其导入到其受信任的存储中。他们在JavaKeyTool之上提供了一个包装工具来执行证书导入为什么这里需要手动导入?客户端和服务器将在SSL握手期间交换证书信息并执行身份验证。同样,这里涉及的是自签名证书和CA。

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


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

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

另一方面,如果浏览器从Web服务器接收到证书,并且它不信任签署该证书的证书颁发机构,那么浏览器将采取一些措施-至少,它应该警告您这一点。当您从网站导入证书时,您实际上是在告诉浏览器您已决定信任该证书,而与签名者无关

编辑:同样的推理也适用:密钥库保存一个可信证书颁发机构及其相应证书的列表。PKI的整个概念是拥有一个可信CA的层次结构,这些CA为其他方发出签名证书。如果证书是自签名的,那么就没有有效的信任链——Java如何知道证书没有被攻击者伪造


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

足够公平。但是在我解释的场景中,只有SSL客户端身份验证被打开。将服务器证书导入客户端需要什么?您只需要将客户端证书导入服务器。@tushima在SSL中,始终需要并验证服务器证书。只有客户端证书是可选的。如果服务器证书没有被验证,中间的人可以冒充服务器。