原文出处: 也许,这样理解HTTPS更容易
我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B:
只要这个密钥S不公开给第三者,同时密钥S足够安全,我们就解决了我们一开始所定问题域了。因为世界上有且只有A与B知道如何加密和解密他们之间的消息。
但是,在WWW环境下,我们的Web服务器的通信模型没有这么简单:
如何确定对称加密算法
慢着,另一个问题来了,我们的服务器端怎么告诉客户端该使用哪种对称加密算法/strong>
当然是通过协商。
虽然服务器端向A、B……的方向还是不安全的,但是至少A、B向服务器端方向是安全的。
好了,如何协商加密算法的问题,我们解决了:使用非对称加密算法进行对称加密算法协商过程。
这下,你明白为什么HTTPS同时需要对称加密算法和非对称加密算法了吧/p>
协商什么加密算法
要达到Web服务器针对每个客户端使用不同的对称加密算法,同时,我们也不能让第三者知道这个对称加密算法是什么,怎么办/p>
使用随机数,就是使用随机数来生成对称加密算法。这样就可以做到服务器和客户端每次交互都是新的加密算法、只有在交互的那一该才确定加密算法。
这下,你明白为什么HTTPS协议握手阶段会有这么多的随机数了吧。
如何得到公钥/h1>
细心的人可能已经注意到了如果使用非对称加密算法,我们的客户端A,B需要一开始就持有公钥,要不没法开展加密行为啊。
这下,我们又遇到新问题了,如何让A、B客户端安全地得到公钥/p>
我能想到的方案只有这些:
-
方案1. 服务器端将公钥发送给每一个客户端
-
方案2. 服务器端将公钥放到一个远程服务器,客户端可以请求得到
我们选择方案1,因为方案2又多了一次请求,还要另外处理公钥的放置问题。
公钥被调包了怎么办是一个鸡生蛋蛋生鸡问题/h1>
但是方案1有个问题:如果服务器端发送公钥给客户端时,被中间人调包了,怎么办/p>
我画了张图方便理解:
如果能解密,就说明这个公钥没有被中间人调包。因为如果中间人使用自己的私钥加密后的东西传给客户端,客户端是无法使用第三方的公钥进行解密的。
客户端能解密同一家第三机构颁发的所有证书:
数字签名,解决同一机构颁发的不同证书被篡改问题
要解决这个问题,我们首先要想清楚一个问题,辨别同一机构下不同证书的这个职责,我们应该放在哪/p>
只能放到客户端了。意思是,客户端在拿到证书后,自己就有能力分辨证书是否被篡改了。如何才能有这个能力呢/p>
我们从现实中找灵感。比如你是HR,你手上拿到候选人的学历证书,证书上写了持证人,颁发机构,颁发时间等等,同时证书上,还写有一个最重要的:证书编 !我们怎么鉴别这张证书是的真伪呢要拿着这个证书编 上相关机构去查,如果证书上的持证人与现实的这个候选人一致,同时证书编 也能对应上,那么就说明这个证书是真实的。
我们的客户端能不能采用这个机制呢这样:
当客户端拿到证书后,开始对证书中的内容进行验证,如果客户端计算出来的证书编 与证书中的证书编 相同,则验证通过:
拿到证书后,我们就可以将证书配置到自己的服务器上了。那么如何配置是具体细节了,留给大家google了。
也许我们需要整理一下思路
我们通过推算的方式尝试还原HTTPS的设计过程。这样,我们也就明白了为什么HTTPS比HTTP多那么多次的交互,为什么HTTPS的性能会差,以及找到HTTPS的性能优化点。
而上面一大堆工作都是为了让客户端与服务器端安全地协商出一个对称加密算法。这就是HTTPS中的SSL/TLS协议主要干的活。剩下的就是通信时双方使用这个对称加密算法进行加密解密。
以下是一张HTTPS协议的真实交互图(从 上copy的,忘了从哪了,如果侵权麻烦告知):

能不能用一句话总结HTTPS/h1>
答案是不能,因为HTTPS本身实在太复杂。但是我还是尝试使用一段话来总结HTTPS:
HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。
好长的一段话。
后记
以上是个人为理解HTTPS而编造出来的自圆其说的看法。顶多只能算是HTTPS的科普文章。如有错误,请指出,万分感谢。
那么,我为什么会觉得以这种方式理解HTTPS会更容易呢个人给出的答案是:当你自己为一家人做一次菜时,你就会理解妈妈天天做菜的不易了
HTTPS为什么安全 &分析 HTTPS 连接建立全过程
数字证书的基础知识
理解 HTTPS
HTTPS 是如何保证安全的/p>
图解SSL/TLS协议
The First Few Milliseconds of an HTTPS Connection
SSL/TLS原理详解
HTTP与HTTPS的区别
腾讯HTTPS性能优化实践
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22388 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!