有一件事情我不太明白,当我完全没有放置证书时,SSL连接却成功建立了。我想知道服务器如何在没有客户端证书的情况下解密消息。
客户端证书的作用是什么?
谢谢
这个Wikipedia文章可能会提供比你所需要的更多信息。
它介绍了公钥加密的工作原理,如果您需要深入了解IT技术,请参考此文章。
使用来自服务器或客户端的证书将为端点提供交换共享密钥(对称加密密钥或种子)的手段。
证书的次要目的(相对于“加密端点之间的通道”而言,这一目的现在被利用得少得多)是验证提供数字证书的端点(使用证书和他们还发送的拥有证明)。
如今,绝大多数SSL事务实际上只关心“通道的加密”,而不是验证端点。 (实际上,在商业互联网上,这是一个副产品,尽管那里存在着越来越多的中间人攻击,这给我们带来了越来越多的动力,试图弄清楚如何真正知道您正在与您认为的服务器或客户端进行通信。)
换句话说,客户端证书可用于验证(以更或少“强”的方式)服务器正在与以下任一方交互:(a)“更值得信赖”的客户端(如果您所做的只是确保证书在您信任的证书池中 - 例如映射到您认为“可信”的用户的LDAP / AD目录,或者从CA颁发,其颁发实践您“信任”),或(b)您验证的特定用户(例如,通过LDAP / AD用户数据库,其中一个或多个不常见的用户已通过某些自动化或带外 - 但无论哪种方式,希望足够安全的过程映射到该证书)。在考虑证书时,不要从加密和解密的角度来看,而是从身份验证的角度来看。可以完全不使用证书进行加密,只需知道公钥即可。但证书包含不同字段,其中之一是证书所有者的身份。对于网络而言,该值是您希望连接到的服务器的域名。由于有办法检查服务器的IP地址是否始终与证书中所述的名称相等(前向和反向DNS请求),因此您可以确信正在与自己想要通信的那个人交谈。
从这个角度来说,客户端证书问题应该更容易理解。客户端证书允许服务器对客户端进行身份验证,因此认证将是相互的。例如,服务器可以检查客户端证书是否有效(未过期,未列入黑名单等)。