美文网首页
微介绍——Https

微介绍——Https

作者: DeronZ | 来源:发表于2019-01-15 21:43 被阅读0次

    下面通过几个问题来了解Https的实现原理。

    1.要想安全的完成客户端与服务端之间的通信,就需要将通信的信息加密,并且加密的信息只有双方能解密,该使用哪种加密技术?

    https使用对称加密技术来完成信息的传输。客户端与服务端使用相同的密码,来完成加解密工作。客户端在开始时会告诉服务端,自己支持哪些对称加密算法,服务端会选择安全级别最高的一种,并告诉客户端该采用哪种加密算法。

    2.问题来了。双方如何将这个对称加密的密码让互相知道,并且在传输的过程中不能让别人知道?

    https使用非对称加密技术来实现对密码的保护。客户端将通信的密码使用公钥进行加密,发送给服务端,后者用私钥解密。在这之前,客户端需要知道服务端的公钥是什么。所以客户端的第一件事应该是管服务端要公钥。公钥是可以公开的,所以公钥的传输不需要加密。

    3.公钥既然是明文传输的,客户端如何保证收到的公钥是正确的,如何验证其完整性并切未被篡改?

    这里使用的是摘要和数字签名技术来完成信息的校验,如果客户端计算得出的摘要值与服务端返回的摘要值不同说明信息是不可信的。

    4.客户端如何确认收到的公钥和数字签名就是服务端发来的。

    这里就引入了证书的概念。证书由第三方权威机构颁发给服务端,客户端从服务端拿到证书后可以通过该机构的根证书来认证收到的证书是否真实合法。认证通过后说明信息是从服务端发来的,是可以信任的。

    5.证书认证的流程是怎样的呢?

    CA机构将自己的公钥保存到根证书中。各大浏览器,还有开发语言会预装CA机构的根证书,用来验证网站的证书的有效性。其他网站向CA机构申请创建自己的证书,CA机构会收集公司的一些信息,如域名,公司名,网站的公钥,这些信息的摘要(如MD5)等。然后使用机构的私钥对这些信息进行加密,生成签名。将签名和基础信息联合在一起作为证书颁发给公司网站。公司拿到证书后,可以使用自己的私钥在对自己旗下的其他子域名创建证书。这样在访问子域名时,可以使用二级证书做认证。这时客户端得到的是一个证书链。即:二级证书~公司证书~CA的根证书。每层证书使用父级证书的公钥做认证。直到能解出CA的根证书,发现解出的根证书摘要与浏览器预存的根证书摘要一致,说明证书是有效的。进而确定网站的公钥是可以使用的。

    可以说https协议是建立在对CA机构的信任的基础上的。

    相关文章

      网友评论

          本文标题:微介绍——Https

          本文链接:https://www.haomeiwen.com/subject/axayrqtx.html