HTTPS在接受证书方面是如何工作的?
发布于 2011-04-09 08:17:19
的小故事:
Client:(连接到服务器,伸出手来)“你好!这是我的加密细节。” 服务器:(接过客户端)“你好。这是我的加密细节。这是我的证书。”(握手谈判完成。客户检查证书) Client:太好了,这是我的钥匙!所以从现在开始一切都是用这个密钥加密的。好的? 服务器:好的!(SSL握手完成) Client:太好了,我的数据是通过HTTP来的!
证书在SSL握手中使用。服务器交给客户端的证书是由类似于署名的证书管理机构 (CA)指定的,并且是特定于服务器的。SSL握手中有各种检查。需要了解的重要问题之一是证书的公共名称属性必须与服务器的主机/ DNS名称匹配。
客户端拥有CA的公共证书(钥匙)副本,因此可以使用它(例如,用SHA1计算)来查看服务器的证书是否仍然正常。
发布于 2011-04-09 06:35:13
首先,我们需要区分服务器端证书和客户端证书。
在大多数情况下,只使用服务器端证书。它用于让客户端通过验证服务器的证书来验证客户端连接到的服务器的真实性(验证过程将在下面描述)。这样做可以防止中间人(MITM)的攻击。
当我们需要将对服务器的访问仅限于某些用户组时,就会使用客户端证书。为此,客户端使用证书对自己进行身份验证。由于用户集通常是有限的(根据某些标准,它在现实生活中可能相当大),验证过程通常与服务器证书验证过程略有不同。
接下来,关于验证本身。
在客户端上验证服务器的证书时,客户端将执行以下步骤:
当服务器验证客户端证书时,上述过程通常是简化的,因为相同的系统是CA,服务器访问是经过验证的。在这种情况下,证书可以直接与允许的证书列表相匹配,或者以上大多数步骤都是不必要的。
https://stackoverflow.com/questions/5603052
复制相似问题