HTTPS流程详解
Posted Xiao冰同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS流程详解相关的知识,希望对你有一定的参考价值。
HTTPS流程备忘录
前言
虽然项目中经常会使用HTTPS传输数据,但是对其原理流程一知半解,在观摩了其它大佬HTTPS的博客之后,自己大概梳理了一下HTTPS的主要流程,以此备忘。
简单来说HTTPS是在HTTP协议的基础上,加了一层SSL证书加密,用来防止内容被中间者监听以及修改,解决了HTTP明文传输的不安全性,默认端口号为443。
效果预览
通过 Fiddler Everywhere 来对HTTP请求进行抓包,发现使用了HTTP的请求是无法抓包得到数据的。
流程描述
- 网站的管理员向CA机构申请证书,并提供自己网站的公钥及域名等相关信息
- CA机构根据提供的公钥、域名、有效时长等信息,制作数字证书,并使用私钥加密,返回给网站,由网站自行配置
- 用户的操作系统自带了CA机构的公钥,存储在用户本地
- 客户端浏览器第一次访问网站,网站服务器将返回之前CA机构颁发的加密后的数字证书
- 客户端浏览器通过操作系统自带的CA机构公钥对网站第一次返回的加密数字证书解密,如果解密成功,说明信息是目标服务器端的,并且没有被中间人修改,还得到了目标网站的公钥及域名相关信息;如果解密失败,则说明该信息不是从目标网站传输过来,或者已经被中间人进行修改。
- 客户端浏览器将生成一个用来对称加密的密钥,并使用之前解密得到的目标网站的公钥对自己生成的密钥经行加密,并发送给目标服务器
- 服务器将使用私钥对客户端浏览器的数据进行解密,得到客户端浏览器生成的对称密钥
- 后续的请求中,客户端浏览器都会将数据通过之前生成的对称加密的密钥进行加密,发送服务器端,而服务器端也会通过之前解密的客户端浏览器生成的密钥
查看CA证书
Windows
在CMD控制台输入以下命令
certmgr.msc
这样就能查看自己的Windows操作系统的CA证书
Mac OS X
点击应用 “钥匙串访问”
点击系统根证书,种类点击证书,结果如下图所示
Linux
发行版过多,不易举例
查看浏览器(Firefox)网站的证书信息
点击网址栏上面的锁图标
点击那个箭头
点击更多信息
这样就显示了详细的证书信息,可以对比下系统自带的CA证书信息,看看是否有同一个机构的证书
总结
HTTPS使用了对称加密跟非对称加密混用的形式加密,并且是在第一次连接时使用非对称加密来安全交换密钥,再使用对称加密传输数据,既保证了安全又避免了非对称加密带来的性能问题。
笔者水平有限,如有勘误,还望指教。
以上是关于HTTPS流程详解的主要内容,如果未能解决你的问题,请参考以下文章