加载网页或网站时,客户端和服务器之间会交换什么类型的证书或 key ?
最佳答案
只交换服务器的公钥和客户端的公钥。
当浏览器连接到支持 HTTPS 的网站/服务时会发生以下情况:
客户问候
客户端发送 SSL 版本号、密码设置、 session 特定数据。
服务器问候
服务器以 SSL 版本号、密码设置和服务器证书(公钥)进行响应。
身份验证和预主 key
客户端现在对服务器证书进行身份验证,并根据密码为 session 创建预主 key 。
客户端使用服务器的公钥加密数据,并将加密后的预主 key 发送给服务器。
解密和Master Secret
服务器现在使用它的私钥来解密预主 key 。
服务器和客户端都执行步骤以使用约定的密码生成主 key 。
生成 session key
客户端和服务器现在都使用主 key 来生成 session key 。 session key 是用于加密和解密 session 期间交换的信息的对称 key 。
使用 session key 加密
此时服务器和客户端都交换消息以通知以后的消息将被加密。
简而言之,涉及到4个key。服务器的公钥和私钥和客户端的公钥和私钥。客户端将其公钥提供给服务器,服务器将其公钥提供给客户端。私钥永远不会传输或与任何人共享,它们保留在客户端和服务器上,因此它们是私有(private)的。
通常,证书由 GoDaddy 或 Verisign 等第三方签署。这让客户放心,向客户发布公钥的服务器确实是他们所说的那个人。 (但要小心,中间人攻击的可能性总是存在的)
关于security - 网页的证书/ key 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064053/