HTTPS 实现原理
第一篇文章我们从实战的角度,做个根证书,然后基于根证书做了个应用证书,并配置到nginx中,并把根证书导入到客户端系统,使用浏览器访问的整个流程,第二篇文章我们分析一下认证机构的起到的作用,本篇文章我们分析一下浏览器和服务器端的交互细节。
大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

HTTPS实现原理图
一. 证书验证阶段
- 浏览器发起 HTTPS 请求
- 服务端返回 HTTPS 证书
- 客户端验证证书是否合法,如果不合法则提示告警
二.数据传输阶段
- 当证书验证合法后,在本地生成随机数
- 通过公钥加密随机数,并把加密后的随机数传输到服务端
- 服务端通过私钥对随机数进行解密
- 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
三.总结
- HTTPS 为什么安全?
因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。
- HTTPS 的传输过程是怎样的?
客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
- 为什么需要证书?
防止”中间人“攻击,同时可以为网站提供身份证明。
- 使用 HTTPS 会被抓包吗?
会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密
参考链接:
https://www.toutiao.com/article/6765851759643460108/?log_from=8d3209e78b362_1662084418310
https://blog.csdn.net/lunahaijiao/article/details/112855875