12.3.5 SSL是怎么工作的
12.3.5 SSL是怎么工作的
HTTPS协议
从浏览器地址栏中可看到协议:例如https://www.amazon.cn/,有的浏览器也会在地址栏显示一个安全的图标(一个绿色的锁),如下图所示:
HTTP
协议是明文传输的,并且不能验证对方的身份,而且不能保证数据的完整性。而当我们在网络上进行购物电子交易时,电子网银转账时,这种方式就显得很不安全了。如果黑客截取了我们和服务器端的通信数据,那么黑客就能获取我们的一些敏感信息了。所以,HTTPS
应运而生!HTTPS
是在HTTP
协议的基础上加入了SSL
协议,**SSL
协议加在了传输层和应用层之间**,如下图所示:
在加入了SSL
协议后,HTTPS
相比HTTP
更加的安全,其对数据的传输进行了加密处理,并且能验证通信双方的身份,还保证了数据传输过程的完整性。这样,即使黑客截取了我们和服务器之间的通信数据,它也获取不到任何有用的信息。
需要说明的是,**SSL
协议是独立于HTTP
的协议**,所以不光是HTTP
协议,其他运行在应用层的SMTP
和Telnet
等协议均可配合SSL
协议使用。可以说SSL
是当今世界上应用最为广泛的网络安全技术。
申请SSL数字证书
SSL
证书是需要向第三方CA
机构申请的,现在大部分的SSL
证书都是要付费申请的。
申请SSL证书流程
我们拿amazon.com
为例:
- 亚马逊首先生成一对公私钥,私钥自己保存。公钥用于申请
SSL
证书 - 然后将公钥和
amazon.com
的一些身份信息发送给第三方可信任CA
机构. CA
机构收到亚马逊的申请之后,将执行一些必要的步骤,以确信请求确实由亚马逊发送而来,并且这些信息是正确的。- 然后,认证中心亚马逊发来的公钥和亚马逊的身份信息进行数字签名,生成数字证书,然后发送给亚马逊。
- 数字证书里面包含了亚马逊的公钥、亚马逊的**身份信息 **和 第三方
CA
机构的数字签名。
SSL协议工作过程
当买家进入一个亚马逊的网站时,他的浏览器
和亚马逊的服务器
在后台发生了如下事件:
- 浏览器访问 https://www.amazon.cn/
- 服务器将网站的证书信息发送给客户端
- 浏览器通过证书上第三方可信任机构CA的签名,向该机构验证证书的真假
- 如果该证书是真的,
- 要求服务器证明是该证书的拥有者
- 如果该证书是真的,
- 服务器向浏览器发送消息和使用服务器私钥加密的消息的摘要
- 浏览器使用证书中服务器的公钥解密消息的摘要,
- 浏览器生成另一份消息的摘要,比较两个摘要,
- 如果两个摘要相同,则说明该服务器确实是该证书的拥有者,
- 则浏览器生成会话秘钥对,把会话公钥作为消息,然后使用服务器公钥加密该消息,然后发送给服务器。
- 如果两个摘要相同,则说明该服务器确实是该证书的拥有者,
- 浏览器生成另一份消息的摘要,比较两个摘要,
- 服务器使用服务器的私钥解密该消息,就得到了浏览器会话的公钥
- 最后,浏览器和服务器双方都拥有对方的公钥,相互通信时,只需要:
- 使用对方的公钥加密要向对方发送的消息,
- 使用自己的私钥解密从对方接收到的消息。
过程如下图所示: