HTTPS 通信流程

原文地址 https://blog.csdn.net/wangweilica6/article/details/50171457 算法

1、简介 前一篇文章,我总结了下,如何部署https服务,开通ssl通道。可是对于https整个通讯流程还有许多疑惑的地方,因此花了好几天看了各类资料,其中有的资料也误导了我,致使我走了些弯路。接下来我就来总结一下,帮助初学者理清https通讯流程。 2、名词解释 一、签名 签名就是在信息的后面再加上一段内容,能够证实信息没有被修改过,怎么样能够达到这个效果呢?通常是对信息作一个hash计算获得一个hash值,注意,这个过程是不可逆的,也就是说没法经过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后作为一个签名和信息一块儿发出去。接收方在收到信息后,会从新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,若是一致,就说明信息的内容没有被修改过,由于这里hash计算能够保证不一样的内容必定会获得不一样的hash值,因此只要内容一被修改,根据信息内容计算的hash值就会变化。固然,不怀好意的人也能够修改信息内容的同时也修改hash值,从而让它们能够相匹配,为了防止这种状况,hash值通常都会加密后(也就是签名)再和信息一块儿发送,以保证这个hash值不被修改。可是客户端如何解密呢?这就涉及到数字证书了。 二、数字证书 主要包含这几大块: ·        证书的发布机构 ·        证书的有效期 ·        公钥 ·        证书全部者(Subject) ·        签名所使用的算法 ·        指纹以及指纹算法 数字证书能够保证数字证书里的公钥确实是这个证书的全部者(Subject)的,或者证书能够用来确认对方的身份。 三、   公钥私钥 刚开始的时候觉得https只能用公钥进行加密,私钥解密,后来看来“公钥密码体制”,才知道,其实二者均可以加密、解密。 四、RSA(非对称加密) RSA是一种公钥密码体制,如今使用得很普遍。公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容能够而且只能由私钥进行解密,而且由私钥加密的内容能够而且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥均可以用来加密和解密,而且一方加密的内容能够由而且只能由对方进行解密。可用于验证hTTPS中各类密钥的加密。 五、对称加密 加密使用的密钥和解密使用的密钥是相同的。所以对称加密算法要保证安全性的话,密钥要作好保密,只能让使用的人知道,不能对外公开。   3、通讯流程 为了搞清楚,https是怎样运转的,接下来是借鉴一篇博文,并稍加改动,形象易懂的解释了整个流程。 step1: “客户”向服务端发送一个通讯请求 “客户”->“服务器”:你好    step2: “服务器”向客户发送本身的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有 “服务器”->“客户”:你好,我是服务器,这里是个人数字证书    step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书究竟是不是“服务器”的,数字证书有没有什么问题,数字证书若是检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密。 “客户”->“服务器”:向我证实你就是服务器,这是一个随机字符串   step4:服务器把加密的结果返回给“客户”。 “服务器”->“客户”:{一个随机字符串}(用私钥进行RSA加密)   step5:“客户”用公钥解密这个返回结果,若是解密结果与以前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。 验证“服务器”的身份后,“客户”生成一个对称加密算法和密钥,用于后面的通讯的加密和解密。这个对称加密算法和密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,由于只有“服务器”手中有能够解密的私钥。这样,后面“服务器”和“客户”就均可以用对称加密算法来加密和解密通讯内容了。 “服务器”->“客户”:{OK,已经收到你发来的对称加密算法和密钥!有什么能够帮到你的?}(用密钥进行对称加密) “客户”->“服务器”:{个人账号是aaa,密码是123,把个人余额的信息发给我看看}(用密钥进行对称加密) “服务器”->“客户”:{你好,你的余额是100元}(用密钥进行对称加密) --------------------- 本文来自 wangweilica6 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wangweilica6/article/details/50171457?utm_source=copy安全

相关文章
相关标签/搜索