Https安全链接建立过程

828 阅读3分钟

在了解https链接建立的过程前,我们现在了解一下相关的概念。

什么是https

https 并非是一种应用层新的协议,只是http通信的部分接口被SSL和TSL协议替换而已,其实就是披着安全层外壳的http。通常http直接和TCP通信,当时用SSL时,http先和SSL通信再和TLS通信。https相对于http多了加密、认证以及完整性保护的功能。

SSL和TLS

SSL最初由网景公司开发,后来被注意到IETF,在SSL的基础上又反正出TLS协议。目前流行的版本是SSL3.0和TLS1.0。

证书机构存在的意义

https认证过程中,重要的一步是身份的认证。客户端通过服务器发放的公钥来跟服务器通信,但是这个过程客户端其实是无法确定服务器的身份的,因为无法确定公钥的来源。这个时候就需要证书机构了,数字证书认证机构是客户端和服务端双方都信赖的第三方机构。

服务器将要发放的公钥给证书机构,证书机构确定服务器身份后,对服务器公钥做数字签名。当服务器要跟客户端通信时,就将证书发放给客户端,客户端通过接收到证书后即可用证书机构的公钥验证服务器的身份,同时获得服务器的真正公钥。现在多数浏览器都会内置证书机构的公钥,省去了证书公钥获取的这一步骤。

Https安全链接建立

主要有如下几个步骤:

  1. 由客户端发送Client Hello报文开始SSL通信,报文中包含客户端支持的SSL版本、加密组件列表。
  2. 当服务器接收到客户端的请求,服务器已Server Hello作为应答,其中包括SSL版本以及从客户端加密组件列表筛选出来的加密组件内容。
  3. 接着,服务器发送certificate报文,将服务器证书传递给客户端。
  4. 下一步,服务器发送Server Hello Done 报文来结束SSL最初的握手协商过程。
  5. 紧接着,客户端发送Client Key Exchange 报文用于回应SSL第一次握手结束。报文中包含一种称为Pre-master secret的随机字符串,用于后续的对称加密的密码。第三步中服务器传递过来的证书通过数字证书认证机构验证后可以获得服务器的非对称加密公钥,报文中的Pre-master secret字符串使用这个公钥加密。
  6. 而后,客户端会继续发送Change Cipher Spec 报文用以通知服务器,之后的报文将使用Pre-master secret密钥进行加密
  7. 客户端最后发送,Finished报文,包含连接至今全部报文的整体校验值,服务器能正确揭秘加密报文则本次握手成功。
  8. 服务器发送Change Cipher spec 报文
  9. 服务器发送Finished报文
  10. 当服务器和客户端交换完Finished报文之后,SSL连接建立完成,后续开始应用层协议通信,即开始发送HTTP请求
  11. 应用层协议通信,即开始发送HTTP请求

上面11个步骤是https建立SSL通信的必要步骤。当然开始通信之初,tcp三次握手是必不可少的,上文中省略了。

Https链接断开

这里就比较简略了,只是在传统的4次挥手中多传递了一次Alert Message: Encrypted Alert。