加密解密(4)SSL协议及HTTPS握手过程

SSL协议

1.简介

  SSL (Secure Sockets Layer 安全套接层)是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信。SSL 协议既用到了公钥加密技术(握手)又用到了对称加密技术(传输数据).在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

2.SSL 握手

  SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。

图 SSL的客户端与服务器端的认证握手 

 

  

3.HTTPS握手过程 

3.1 互报姓名,各自介绍 

(1) 客户端发送“您好”消息,包含如 SSL 的版本、支持的加密方法(加密套件)和支持的数据压缩方法(哈希函数)。也包含 28 字节的随机数。

(2) 服务器以“您好”消息响应,此消息包含加密方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。 
  注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。

3.2 互传证书,互相验证 

(3) 服务器发送其证书----SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。) 
      如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要被客户端认证,则客户端会发出“数字证书请求”消息。在响应 “数字证书请求”消息中,服务器发出支持客户端数字证书类型的列表和可接受的CA的名称。

(4) 服务器发出“您好完成”消息并等待客户端响应。

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“您好”消息参数是否可以接受。 
  如果服务器要求客户端是可信的,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。

  如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。 
   注意如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。

3.3 客户端生成对称密钥,服务器接收对称密钥 

(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret (一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码 ( MAC )密钥(用服务器的公用密钥加密的)。 

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret ,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。

(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。

3.4 用对称密钥加密数据并传输

(9) SSL 握手结束,且可以用对称密钥加密的应用程序数据,然后发送。

 

posted @ 2015-08-03 17:34  f9q  阅读(499)  评论(0编辑  收藏  举报