什么是SSL/TLS协议?
NetScape设计了SSL 协议,ISOC对SSL升级后成了TLS。
SSL/TLS是一种解决网络通信安全的协议。
什么是HTTPS协议 ?
HTTPS 协议是由 HTTP 加上SSL/TLS协议构建的可进行加密传输、身份认证的网络协议。
哪里安全?怎么做的安全? 带着疑问我们先了解下http协议
传统http存在的安全问题?
1. 第三方可以获知通信内容。
2. 第三方可以修改通信内容。
3. 第三方可以冒充他人身份参与通信。
SSL/TLS是如何保证以上三点安全的
1.信息加密,密文传输数据
2.校验机制,别人修改数据也没用
3.通过证书确保服务端身份无法伪造
下面简单阐述下SSL/TLS的实现过程:
1.客户端发出请求,携带以下信息
支持的协议版本,比如TLS1.0
一个随机数,用于生成"对话密钥"。
支持的加密算法,比如RSA
支持的压缩方法
2.服务端接收到客户端发出的请求,响应内容包含以下信息
确定协议版本TLS1.0
一个随机数,用于生成"对话密钥"。
确认加密算法
服务器证书
3.客户端接收到服务端的响应内容
首先看下证书是否是在服务器根证书的授信任列表中,如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。
如果证书没问题,从证书中提取到公钥 ,然后向服务端响应以下内容:
生成一个随机数,用于生成"对话密钥"。(该随机数用公钥加密, 服务端收到后会用私钥解密)
编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。
4.服务端最后回应
编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
最后
服务端和客户端双方都持有了3个随机数,根据约定的加密算法生成一个对称密钥,之后所有的数据传输的时候,对数据进行对称加解密。