security - 网页的证书/ key 交换

标签 security networking

加载网页或网站时,客户端和服务器之间会交换什么类型的证书或 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/

相关文章:

windows - 测试套接字连接的好工具?

ios - 为什么这个iOS应用无法访问网络?

asp.net - 防止对动态创建的 DOM 网页和动态生成的 javascript 事件处理程序进行 XSS 攻击

python - 屏蔽掉 python 日志中的敏感信息

security - Azure 云服务的反恶意软件

c# - C# 中的 unsigned char* C++ 等价物(用于原始数据)

security - 针对 Snyk 中的问题自动打开 Jira 票证

linux - 一条规则中的 iptables LOG 和 DROP

apache - 从不同的计算机访问修改后的 localhost 目录

python - Python 线程是否打印到与主线程不同的缓冲区?