我想了解浏览器在打开HTTPS页面时所做的步骤,以深入了解双方(服务器和客户端)需要完成的每项操作。 我知道它的基本步骤,但我想进一步了解细节。我找到的谷歌链接描述了一般信息,但没有描述细节。
是否有任何我可以阅读相关信息的来源。
我一直在考虑寻找Mozilla Firefox的来源,但之前决定问这里。
谢谢。
答案 0 :(得分:6)
HTTPS在RFC 2818中定义。简而言之,浏览器首先建立与服务器的SSL / TLS连接,然后在此连接中发送HTTP请求/响应。
要建立SSL / TLS通道,客户端会启动握手,在此期间服务器会发送其X.509证书。除了SSL / TLS握手机制之外,浏览器还根据它拥有的信任锚列表(可信证书)和它尝试访问的名称来验证证书(URL中的主机名必须与证书匹配,如{ {3}})。其中大部分通常在SSL / TLS堆栈中实现,但是某些浏览器可以通过添加异常(有时是永久异常)来绕过这一点,因此如果SSL / TLS堆栈无法接受证书,浏览器也会有回退机制成功。
SSL / TLS协议(及其握手)在RFC 2818 Section 3.1,SSLv3,TLS 1.0和1.1中定义。
使用服务器证书中的服务器公钥,客户端和服务器能够执行经过身份验证的密钥交换,之后它们具有共同的预主密钥。主密钥和用于加密应用程序数据的共享对称密钥是从这个预主密钥中派生出来的。
用于此经过身份验证的密钥交换1.2的机制。 depend on the cipher suite中有更多详细信息。
如果您想通过示例学习,那么值得查看Wireshark示例数据(如TLS specification itself所示)。
“this answer”也应引起关注。