HTTPS 通信流程(签名、数字证书)

一、简介

前一篇文章,我总结了下,如何部署https服务,开通ssl通道。但是对于https整个通信流程还有许多疑惑的地方,所以花了好几天看了各种资料,其中有的资料也误导了我,导致我走了些弯路。接下来我就来总结一下,帮助初学者理清https通信流程。

二、名词解释

1、签名

签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。但是客户端如何解密呢?这就涉及到数字证书了。

2、数字证书

主要包含这几大块:

·        证书的发布机构

·        证书的有效期

·        公钥

·        证书所有者(Subject)

·        签名所使用的算法

·        指纹以及指纹算法

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。

3、   公钥私钥

刚开始的时候以为https只能用公钥进行加密,私钥解密,后来看来“公钥密码体制”,才知道,其实两者都可以加密、解密。

4、RSA(非对称加密)

RSA是一种公钥密码体制,现在使用得很广泛。公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。可用于验证hTTPS中各种密钥的加密。

5、对称加密

加密使用的密钥和解密使用的密钥是相同的。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。

 

三、通信流程

为了搞清楚,https是怎样运转的,接下来是借鉴一篇博文,并稍加改动,形象易懂的解释了整个流程。

step1: “客户”向服务端发送一个通信请求

客户”->“服务器:你好

  

step2: “服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有

服务器”->“客户:你好,我是服务器,这里是我的数字证书 

 

step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密。

客户”->“服务器:向我证明你就是服务器,这是一个随机字符串  

step4:服务器把加密的结果返回给“客户”。

服务器”->“客户{一个随机字符串}(用私钥进行RSA加密)

 

step5:“客户”用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。 验证“服务器”的身份后,“客户”生成一个对称加密算法密钥,用于后面的通信的加密和解密。这个对称加密算法密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,因为只有“服务器”手中有可以解密的私钥。这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。

服务器”->“客户{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}(用密钥进行对称加密)

客户”->“服务器{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}(用密钥进行对称加密)

服务器”->“客户{你好,你的余额是100}(用密钥进行对称加密)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值