一键搞定内网穿透 联行号查询|开户行查询 在线工具箱 藏经阁
当前位置:首页 / 杂记 / 正文
SSL/TLS协议
参考
SSL工作原理
https://www.wosign.com/basic/howsslwork.htm 
HTTPS加密过程中涉及的原理及算法
https://www.wosign.com/faq/faq2018-0530-01.htm 
细说 CA 和证书
https://linux.cn/article-7289-1.html


SSL(Secure Sockets Layer 安全套接层)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。HTTPS就是使用SSL/TLS协议加密的HTTP通信。

 ♦ 作用
不加密的HTTP通信有三大风险:窃听风险、篡改风险、冒充风险。SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充
 ♦ 版本
目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。
百度的ssl版本显示是V3。
 ♦ 原理
SSL/TLS协议的基本思路是采用公钥加密法确定会话密钥,客户端产生密钥随机数,使用服务器公钥加密后传给服务器,服务器使用私钥解密,这样两边有了相同的会话密钥,然后使用密钥加密数据进行http传输。
1. 认证服务器。浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。

2. 协商会话密钥。在握手阶段浏览器和服务器最终确定一个对话密钥,每一次对话(session,我理解成每刷新一次浏览器),客户端就会随机生成一个对话密钥,在握手阶段的几次交互以及证书的加密验签,就是为了生成这个两边都拥有的相同的对话密钥,证书最终是为了生成这个对话密钥,后面的传输就完全使用密钥加密解密了,可以认为和证书无关了)。浏览器客户端产生对话密钥,服务器将用自己的私钥解开加密的密钥。

3.加密通讯。使用对称加密方式加密传输数据,客户端服务器都使用相同的对话密钥加密和解密数据,这个加密是在网络传输层进行的,最终还是使用的是HTTP协议,数据还是会被劫持看到的,但是因为是加密的,而且第三方不知道密钥,所以劫持了也没用。

4. HTTPS协议是在传输层加密数据,在浏览器使用firebug等调试工具看到的post/get数据还是明文的,因为还没到传输层。

因此,SSL/TLS协议的基本过程是这样的:
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密的http通信。