1.SSL/TLS握手 简化版
浏览器 |
|
服务器 |
发起 |
—> 1.浏览器通知服务器浏览器所支持的加密协议 |
接收 |
接收 |
<— 2.服务器通知浏览器从1中选用的加密协议,并给予证书 |
发起 |
3.用CA的公钥鉴别服务器的证书是否有效,有效则生成一个随机数(秘密数),秘密数加上2确定的加密协议产生会话密钥 |
|
|
发起 |
—> 4.浏览器用服务器的公钥加密秘密数发给服务器 |
接收 |
|
|
5.服务器用私钥对4解密获得秘密数再加上2确定的加密协议产生会话密钥 |
|
<— 握手结束,使用相同的会话密钥加密传输的数据(对称加密) —> |
|
注意:
过程有所简化,比方说在正式使用会话密钥通话前,浏览器和服务器各自会发送一段用会话密钥加密的 Finish 消息,以检验之前通过握手建立起来的加解密通道是否成功, 详细版请看下文
2.先行知识
SSL和TLS的概念与区别
- 什么是SSL?
SSL(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
- 什么是TLS?
TLS(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。
TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1(可简单理解为同一事物不同阶段的不同称呼),它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
- SSL和TLS的主要区别?
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。另外,TLS版本号也与SSL的不同(TLS的版本1.0使用的版本号为SSLv3.1).
“对称加密”和“非对称加密”的概念</