分析HTTPS的连接过程

一、借用网络上很火的一个图来记录一下https协议的理解

如图所示:

1、客户端向服务端发起请求,连接服务端的443端口

2、服务端证书有个密钥对,自己保存着私钥,公钥可以发给任何人

3、服务端回应请求,发送公钥给客户端

4、客户端收到服务器的公钥之后,会对该公钥进行合法性校验(实则就是对CA证书合法性校验的过程),如果校验通过则,客户端自身生成一个随机值(客户端密钥),这个随机值用作对称加密传输服务器数据(对称加密密钥client key),然后用服务端发来的公钥加密客户端的密钥,这样客户端密钥就变成了密文

第一次https中的http请求结束

5、客户端发起第二次https中的http请求,将加密后的client key 发给服务端

6、服务端收到client key 后,用自己的私钥进行非对称解密,解密后的明文就是client key ,然后用client key对数据进行对称加密,这样数据就变成了密文。

7、服务端将加密后的数据发给客户端

8、客户端收到服务端发来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。如此整个https传输完成。

二、CA证书合法性验证过程:

1.    首先在本地电脑寻找是否有这个服务器证书上的ca机构的根证书。如果有继续下一步,如果没有弹出警告。
2.    使用ca机构根证书的公钥对服务器证书的指纹和指纹算法进行解密。
3.    得到指纹算法之后,拿着这个指纹算法对服务器证书的摘要进行计算得到指纹。
4.    将计算出的指纹和从服务器证书中解密出的指纹对比看是否一样如果一样则通过认证。
 

三、CA及CA证书的认识


CA(Certificate Authority)是证书的签发机构,它是负责管理和签发证书的第三方机构,是受到广泛信任的机构。一般在我们的电脑中,浏览器里,或者手机里都会内置一批这样的受信机构的根证书。
 

顾名思义CA证书就是由CA机构签发的证书。其实证书谁都可以签,你也可以自己给自己签发证书,但是由于你自己并不是被广泛信任的机构,所以你自己签发的证书并没有什么用。公网也不会信任你的证书。服务器证书包括以下几种信息:


证书信任链:
比如我是CA机构我签发了一封证书 我这份证书是信任B证书的另外B证书又信任了其他的C证书......那么这条链条下去的都可以信任。所以一旦CA机构的根证书不可信了,那么所有由他签发出来的证书将全部变得不可信,后果很严重。

发布了18 篇原创文章 · 获赞 1 · 访问量 672

猜你喜欢

转载自blog.csdn.net/wj2555111/article/details/103875311