有些事情我不明白,当我根本没有放置证书时,SSL连接成功建立,我想知道服务器如何在没有客户端证书的情况下解密消息。
什么是客户端证书?
由于
答案 0 :(得分:3)
据我了解( 15000米视图。)
服务器具有在其证书中发布的公钥。浏览器使用它来加密它发送的所有内容。只有服务器可以解密信息,因为只有它(希望)拥有私钥。
如果您有客户端证书,那么您将其提供给服务器以确保它为您加密内容,以便您只能解密它(再次使用您的私钥)。
所以对我来说:您可以完全自由地发送您的信用卡信息,因为知道只有服务器可以读取它。然后,客户端可以发送适当的证书或为会话创建“临时”证书,然后向服务器发送“公共”加密密钥,以确保其他人不会发送它。然后通信双向加密,但是分开加密。
现在来自here
TLS客户端和服务器协商a 使用a建立有状态连接 握手程序。在这 握手,客户端和服务器同意 关于各种参数 建立连接的安全性。
握手在客户端开始 连接到启用TLS的服务器 请求安全连接,以及 列出了支持的列表 CipherSuites(密码和哈希 函数)。
从此列表中,服务器 选择最强的密码和哈希 它也支持和的功能 通知客户该决定。
服务器发送回来 以形式识别 数字证书。证书 通常包含服务器名称, 可信证书颁发机构(CA), 和服务器的公共加密 键。
客户可以联系服务器 颁发证书( 如上所述的受信任的CA)并确认 证书之前是真实的 程序
为了生成 用于安全的会话密钥 连接,客户端加密 服务器的随机数(RN) 公钥(PbK),并发送结果 到服务器。只有服务器应该 能够解密它(用它 私钥(PvK)):这是一个 事实上,使密钥隐藏起来 第三方,因为只有服务器 并且客户可以访问此内容 数据。客户端知道PbK和RN,以及 服务器知道PvK和(之后 解密客户端的消息) RN。第三方可能只知道RN PvK受到了损害。来自 随机数,双方都生成 加密和密钥的关键材料 解密。
结论是 握手并开始安全 连接,加密和 用密钥材料解密,直到 连接关闭。
此wikipedia article可能会提供比您想要的更多信息。
答案 1 :(得分:0)
使用来自服务器或客户端的证书将为端点提供交换共享密钥(对称加密密钥 - 或种子)的方法。
证书的辅助目的(相对于“加密端点之间的通道”,目前利用率较低的一个)是验证端点提供他们的数字证书(使用证书和他们也发送的证明)。
目前绝大多数SSL交易实际上只担心“加密频道”,而不是对端点进行身份验证。 (实际上,这是商业互联网的一个附带好处,虽然大量的中间人攻击让我们越来越有动力去弄清楚如何真正知道你是与您认为自己的服务器或客户交谈。)
换句话说,客户端证书对于(或多或少“更强”的方式)验证服务器与(a)“更可信”的客户端进行交互(如果你所做的只是确保)证书是您信任的证书池之一 - 例如映射到您认为“受信任”的用户的LDAP / AD目录,或者从您“信任”的颁发实践的CA颁发)或(b)您的特定用户进行身份验证(例如,再次通过用户的LDAP / AD数据库,一个或多个不常见或更多 - 已通过某些自动或带外映射到该证书 - 但无论哪种方式,希望足够安全 - 处理)。
答案 2 :(得分:0)
答案 3 :(得分:0)
考虑证书不是在加密 - 解密方面,而是在认证方面。加密可以在没有证书的情况下完成 - 只需知道开放密钥即可。但证书包含不同的字段,其中包括证书所有者的个性。对于Web,此值是您要连接的服务器的域名。由于有办法检查服务器的IP地址是否始终等于证书中指定的名称(向前和向后DNS请求),您可以确定您正在与您希望的那个对话。
在这个术语中,客户端证书问题应该更容易理解。客户端证书允许服务器验证客户端,因此验证将是相互的。例如,服务器可以检查客户端证书是否有效(未过期,未列入黑名单等)。