https协议

https并不是一个新协议,而是http协议加上ssl协议或者tls协议的一个组合称呼。
http协议本身是无状态的协议,在网络上也是明文传输,相当于裸奔。这样传输一些敏感信息如用户名,密码等等就十分不安全。
ssl协议,安全套接字层协议,是在套接字层进行加密操作;tls协议,传输层安全协议,则是构建加密传输通道。
二者都相当于是在http协议与TCP协议之间加了一层安全保证。

ssl3.0协议的后续升级版本就是tls协议,二者差距比较小。

ssl协议分为两层,上层包括上层为SSL握手协议(SSL handshake protocol)、SSL密码变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol),而下层则是SSL记录协议(SSL record protocol)。

  • SSL握手协议:是SSL协议非常重要的组成部分,用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在服务器和客户端之间安全地交换密钥、实现服务器和客户端的身份验证。

  • SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端,随后的报文都将使用新协商的加密套件和密钥进行保护和传输。

  • SSL警告协议:用来向通信对端报告告警信息,消息中包含告警的严重级别和描述。

  • SSL记录协议:主要负责对上层的数据(SSL握手协议、SSL密码变化协议、SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密,并把处理后的记录块传输给对端。

ssl协议处于应用层与传输层之间,会对http的报文内容进行各种处理:

  • 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。

  • 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。

  • 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。

对称密钥的交换是在握手时,利用非对称加密的方式交换密钥。