当浏览器用 HTTPS 协议请求一个页面时,下面的过程也会发生:
1.浏览器向 server 发出 https 请求,server 监听 443 端口,这个端口是 web server 用来监听使用了 HTTPS 协议的请求。
2.一旦 web 浏览器与 web 服务器之间成功建立连接,SSL 握手流程就开始了。
在握手流程中,浏览器和服务器会针对数据的加密算法进行协商并答成一致。过程如下:
1. 浏览器向服务器发送一些自身的信息(例如其支持的SSL版本);
2. 服务器响应类似信息,例如通信过程中将要使用的SSL版本;
3. 服务器会向浏览器发送证书,证书中包含了加密数据的公钥,发布者信息,有效期以及服务端唯一标识;
4. 浏览器核实该证书,并发送信息通知服务器证书已验证完成;
5. 浏览器向服务器发送“Change cipher spec”指令:浏览器将对数据进行加密;
6. 服务器向浏览器发送“Change cipher spec”指令,服务端将要对待发送的数据进行加密。
当我们单击chrome中小锁标志,我们就可以看到服务端发送过来的数字证书。
3. 浏览器产生对称的密钥并通过服务器公钥将其加密,随后将加密后的密钥发送到服务器。这个对称的密钥用于在整个会话中进行加密和解密。
我们知道数字证书是用来提供公钥的。有两个关键的术语用来理解数字证书。
X.509 是一个定义数字证书格式的标准,它规定了证书中需要包含哪些信息,例如下面:
版本 指定 X.509 的版本
序列号 唯一的一串数字用以区分证书
证书发布者名称 CA
公钥
CA(Certification authority)表示发布该证书的机构。只有从发布者那里才能获得证书。证书中通常会有发布者的签名用以保证有效性。
转载于:https://blog.51cto.com/10988776/1723229