我想知道浏览器在打开 HTTPS 页面时执行的步骤,以深入了解双方(服务器和客户端)需要执行的每个操作。我知道它的基本步骤,但我想了解更多细节。我在 Google 中找到的链接描述的是一般信息,而不是细节。
有没有可以阅读相关信息的来源。
我一直在考虑寻找 Mozilla Firefox 的来源,但之前决定在这里询问。
谢谢你。
HTTPS 在RFC 2818中定义。简而言之,浏览器首先与服务器建立 SSL/TLS 连接,然后在此连接中发送 HTTP 请求/响应。
为了建立 SSL/TLS 通道,客户端启动握手,在此期间服务器发送其 X.509 证书。除了 SSL/TLS 握手机制外,浏览器还根据它拥有的信任锚列表(受信任的证书)和它尝试访问的名称(URL 中的主机名必须与证书匹配,如RFC中定义的那样)验证证书2818 第 3.1 节)。其中大部分通常在 SSL/TLS 堆栈中实现,但某些浏览器可以让您通过添加异常(有时是永久异常)来绕过这一点,因此浏览器还有一个备用机制,以防 SSL/TLS 堆栈无法接受证书成功地。
SSL/TLS 协议(及其握手)在SSLv3、TLS 1.0、1.1和1.2中定义。
使用服务器证书中的服务器公钥,客户端和服务器能够执行经过身份验证的密钥交换,之后它们具有共同的预主密钥。主密钥以及用于加密应用程序数据的共享对称密钥都是从该预主密钥导出的。
用于此经过身份验证的密钥交换的机制取决于密码套件。TLS 规范本身有更多细节。
如果您想通过示例学习,值得查看 Wireshark 示例数据(如本答案所示)。
“ HTTPS 连接的前几毫秒”也应该很有趣。