前段时间在做HTTPS相关的需求碰到了一些问题,今天有空整理一下HTTPS的相关知识,希望对您能有所帮助 。
![一篇文章让您了解HTTPS](http://img.jiangsulong.com/230731/1A1555C3-0.jpg)
文章插图
图片
什么是HTTPSHTTPS,即HTTP Security,是建立在SSL / TSL协议之上,其中,TSL是SSL协议的升级版,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3,可以理解为同一套协议 。他的作用主要以下三点:
防止窃听 。 所有信息都是加密传播,第三方无法窃听 。
防止篡改 。具有校验机制,一旦被篡改,通信双方会立刻发现 。
防止冒充 。配备身份证书,防止身份被冒充 。本文将从Android使用者的角度,尽量解释清楚什么是HTTPS 。
TLS验证流程
![一篇文章让您了解HTTPS](http://img.jiangsulong.com/230731/1A15530R-1.jpg)
文章插图
TLS验证流程交互流程如下:
- 客户端发出请求给服务端,请求的内容包括:
- 支持的协议版本,比如TLS 1.0版 。
- 一个客户端生成的随机数,稍后用于生成"对话密钥" 。
- 支持的加密方法,比如RSA公钥加密 。
- 支持的压缩方法 。
- 服务器回应客户端,包含以下内容:
- 确认使用的加密通信协议版本,比如TLS 1.0版本 。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信 。
- 一个服务器生成的随机数,稍后用于生成"对话密钥" 。
- 确认使用的加密方法,比如RSA公钥加密 。
- 服务器证书 。
- 客户端收到服务器回应以后,首先验证服务器证书 。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信 。
如果证书没有问题,客户端就会从证书中取出服务器的公钥 。然后,向服务器发送下面三项信息 。 - 一个随机数 。该随机数用服务器公钥加密,防止被窃听 。
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送 。
- 客户端握手结束通知,表示客户端的握手阶段已经结束 。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验 。
- 服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥" 。然后,向客户端最后发送下面信息 。
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送 。
- 服务器握手结束通知,表示服务器的握手阶段已经结束 。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验 。
"不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样 。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性 。
对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥 。
pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一 。"
HTTPS相关名词HTTPS涉及到的概念比较多,什么X509,.pem,.crt等等,理解了HTTPS的交互流程之后,先来理一理这些概念 。
- X509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准 。
- PEM - Privacy Enhanced MAIl,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.查看PEM格式证书的信息:
推荐阅读
- 微服务架构
- Qt中实现Http服务接收POST请求
- OpenAI下架一款人工智能识别工具
- 面色发黄调理小妙招 面色发黄 怎么办
- 在瑜伽垫上做运动要不要穿鞋
- 茄子泡一晚上还能吃吗 茄子泡一晚上还能吃吗
- 牛蒡根可以代替牛蒡茶吗 牛蒡根可以代替牛蒡子吗
- 电脑清洗的方法有哪些 电脑清洗的方法
- 怎样让衣服不变黄 怎样让衣服不变黄色
- 花卷一次发酵还是两次发酵好 花卷一次发酵还是两次发酵好呢