
文章插图
1.Client发起一个HTTPS(比如https://juejin.im/user/5a9a9cdcf265da238b7d771c)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口 。
2.Server把事先配置好的公钥证书(public key certificate)返回给客户端 。
3.Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书) 。如果验证通过则继续,不通过则显示警告信息 。
4.Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server 。
5.Server使用自己的私钥(private key)解密这个消息,得到对称密钥 。至此,Client和Server双方都持有了相同的对称密钥 。
6.Server使用对称密钥加密“明文内容A”,发送给Client 。
7.Client使用对称密钥解密响应的密文,得到“明文内容A” 。
8.Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B” 。
五、HTTP 与 HTTPS 的区别
- HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全 。

文章插图
关于安全性,用最简单的比喻形容两者的关系就是卡车运货,HTTP下的运货车是敞篷的,货物都是暴露的 。而https则是封闭集装箱车,安全性自然提升不少 。
- HTTPS比HTTP更加安全,对搜索引擎更友好,利于seo,谷歌、百度优先索引HTTPS网页;
- HTTPS需要用到SSL证书,而HTTP不用;
- HTTPS标准端口443,HTTP标准端口80;
- HTTPS基于传输层,HTTP基于应用层;
- HTTPS在浏览器显示绿色安全锁,HTTP没有显示;
首先,很多人还是会觉得HTTPS实施有门槛,这个门槛在于需要权威CA颁发的SSL证书 。从证书的选择、购买到部署,传统的模式下都会比较耗时耗力 。
其次,HTTPS普遍认为性能消耗要大于HTTP,因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源 。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少 。但事实并非如此,用户可以通过性能优化、把证书部署在SLB或CDN,来解决此问题 。举个实际的例子,“双十一”期间,全站HTTPS的淘宝、天猫依然保证了网站和移动端的访问、浏览、交易等操作的顺畅、平滑 。通过测试发现,经过优化后的许多页面性能与HTTP持平甚至还有小幅提升,因此HTTPS经过优化之后其实并不慢 。
除此之外,想要节约购买证书的开销也是原因之一 。要进行HTTPS通信,证书是必不可少的 。而使用的证书必须向认证机构(CA)购买 。
备注:
这篇文章摘抄来自网络 。我打算总结一些列架构师需要的优秀文章,由于自己写会花太多时间,我决定做一个搬运工,为大家筛选优秀的文章,最后我会做成索引方便大家查找 。
推荐阅读
- HTTPS浅析与抓包分析
- 怎么理解Laravel的核心架构
- 深入了解python的3D高级库pyvista
- 深入理解谷歌最强V8引擎垃圾回收机制
- Nginx系列:https配置
- 网络编程之 Https 详细分析,超详细知识点
- 苏轼对佛道两教皆有深入研究 道家思想对苏轼的影响
- 8种交叉验证类型的深入解释和可视化介绍
- 理解卷积神经网络中的自注意力机制
- Java工具包之轻松理解Java中的IO与NIO
