HTTPS流程详解

Posted Xiao冰同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS流程详解相关的知识,希望对你有一定的参考价值。

HTTPS流程备忘录

前言

虽然项目中经常会使用HTTPS传输数据,但是对其原理流程一知半解,在观摩了其它大佬HTTPS的博客之后,自己大概梳理了一下HTTPS的主要流程,以此备忘。
简单来说HTTPS是在HTTP协议的基础上,加了一层SSL证书加密,用来防止内容被中间者监听以及修改,解决了HTTP明文传输的不安全性,默认端口号为443。

效果预览

通过 Fiddler Everywhere 来对HTTP请求进行抓包,发现使用了HTTP的请求是无法抓包得到数据的。

流程描述

  1. 网站的管理员向CA机构申请证书,并提供自己网站的公钥及域名等相关信息
  2. CA机构根据提供的公钥、域名、有效时长等信息,制作数字证书,并使用私钥加密,返回给网站,由网站自行配置
  3. 用户的操作系统自带了CA机构的公钥,存储在用户本地
  4. 客户端浏览器第一次访问网站,网站服务器将返回之前CA机构颁发的加密后的数字证书
  5. 客户端浏览器通过操作系统自带的CA机构公钥对网站第一次返回的加密数字证书解密,如果解密成功,说明信息是目标服务器端的,并且没有被中间人修改,还得到了目标网站的公钥及域名相关信息;如果解密失败,则说明该信息不是从目标网站传输过来,或者已经被中间人进行修改。
  6. 客户端浏览器将生成一个用来对称加密的密钥,并使用之前解密得到的目标网站的公钥对自己生成的密钥经行加密,并发送给目标服务器
  7. 服务器将使用私钥对客户端浏览器的数据进行解密,得到客户端浏览器生成的对称密钥
  8. 后续的请求中,客户端浏览器都会将数据通过之前生成的对称加密的密钥进行加密,发送服务器端,而服务器端也会通过之前解密的客户端浏览器生成的密钥

查看CA证书

Windows

在CMD控制台输入以下命令

certmgr.msc



这样就能查看自己的Windows操作系统的CA证书

Mac OS X

点击应用 “钥匙串访问”

点击系统根证书,种类点击证书,结果如下图所示

Linux

发行版过多,不易举例

查看浏览器(Firefox)网站的证书信息


点击网址栏上面的锁图标


点击那个箭头


点击更多信息


这样就显示了详细的证书信息,可以对比下系统自带的CA证书信息,看看是否有同一个机构的证书

总结

HTTPS使用了对称加密跟非对称加密混用的形式加密,并且是在第一次连接时使用非对称加密来安全交换密钥,再使用对称加密传输数据,既保证了安全又避免了非对称加密带来的性能问题。
笔者水平有限,如有勘误,还望指教。

以上是关于HTTPS流程详解的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS流程详解

SSL协议握手工作流程详解(双向HTTPS流程)

HTTPS加密流程超详解

http与https详解

python接口自动化(三十五)-封装与调用--流程类接口关联(详解)

ssl协议工作流程详解