加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

数字签名与HTTPS详解

发布时间:2019-04-19 18:09:59 所属栏目:优化 来源:青玉伏案
导读:副标题#e# 前面几篇博客聊了HTTP的相关东西,今天就来聊一聊HTTPS的东西。因为HTTP协议本身存在着明文传输、不能很好的验证通信方的身份和无法验证报文的完整性等一些安全方面的确点,所以才有了HTTPS的缺陷。HTTPS确切的的说不是一种协议,而是HTTP + SSL

2、生成数字签名公钥证书:对于CA机构来说,其也有两个密钥,我们暂且称之为CA私钥和CA公钥。CA机构将服务端的Public Key作为输入参数将其转换为一个特有的Hash值。然后使用CA私钥将这个Hash值进行加密处理,并与服务端的Public Key绑定在一起,生成数字签名证书。其实数字签名证书的本质就是服务端的公钥+CA私钥加密的Hash值。(CA私钥负责签名,CA公钥负责验证)

3、服务器获取到这个已经含有数字签名并带有公钥的证书,将该证书发送给客户端。当客户端收到该公钥数字证书后,会验证其有效性。大部分客户端都会预装CA机构的公钥,也就是CA公钥。客户端使用CA公钥对数字证书上的签名进行验证,这个验证的过程就是使用CA公钥对CA私钥加密的内容进行解密,将解密后的内容与服务端的Public Key所生成的Hash值进行匹配,如果匹配成功,则说明该证书就是相应的服务端发过来的。否则就是非法证书。

4、验证完服务端公钥的合法性后,就可以使用该公钥进行加密通信了。

下方这个截图就是苹果的根证书的一些信息,从下方可以看出,CA证书内容中包括加密算法,公共密钥以及数字签名。

下方就是公钥以及数字签名的具体内容,当对下方公共密钥进行验证时,需要使用内置的CA公钥将数字签名进行解密。然后将解密后的内容,与公钥生成的Hash值进行比较,如果匹配成功,那么该证书就是CA机构颁布的合法证书。


三、HTTPS安全通信机制的建立

上面我们聊完AES与RSA加密策略,然后又聊了带有数字签名的公共密钥。上面这两部分内容都是为HTTPS做铺垫的,接下来就看一看HTTP+SSL是如何进行数据传输的。

1、HTTPS简介

在开头的部分也说了,HTTPS不是一个新的通信协议,而是HTTP与SSL(或TSL)的组合。SSL--安全套节层(Secure Socket Layer), TSL(Transport Layer Security 安全传输层)是以SSL为原型开发的协议,IETF以SSL3.0为基准后又制定了TLS1.0、TLS1.1和TLS1.2,当前主流版本为SSL3.0与TLS1.0。

HTTPS就是在HTTP与TCP层中间添加了一个SSL层。因为HTTPS被HTTP多了这层加密的流程,所以HTTPS的速度要比HTTP慢的多。

2、HTTPS的通信过程

SSL的加密过程是RSA与AES混合进行的。简单概括一下,就是通过RSA加密方式来交换AES加解密的密钥,然后使用AES加密的方式来传输报文。下方是SSL建立连接以及传输数据的图解。在下图中大体可以分为四步:

第一步:有客户端发起的第一次握手,此次握手过程的主要目的是从服务端获取数字签名证书,服务端在发送数字签名证书之前要先确认客户端的SSL版本、加密算法等信息。

第二步:完成第一次握手后,接着进行第二次握手。第二次握手是在客户端收到证书后发起的,主要目的是将AES加解密使用的Key (Pre-master secret)发送给服务端。当然这个AES_KEY是使用第一次握手获取的公钥进行加密的。客户端收到这个使用公钥加密后的AES_KEY,使用服务端的私钥进行解密。这样客户端和服务端经过二次握手后都持有了AES加解密的KEY。

第三步:当Client与Server端都持有AES_KEY后,就可以对HTTP报文进行加解密了。

END: 最后就是断开连接了。具体如下图所示:

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!