HTTPS中的数字证书是什么?数字签名又是什么?

 

文章目录


 

https 中数字证书和数字签名概要

https 证书及 SSL 证书,SSL 数字证书提供了 SSL 加密通道,这个 http 是没有办法保证的,因为 http 采用明文方式传输数据。

数字证书是由证书认证机构对证书申请者身份验证之后,用 CA 根证书对申请人的一些基本以及申请人的公钥进行签名,签名即 CA 私钥对服务端公钥转化后的 hash 值进行加密,将服务端公钥和签名联合组成数字证书。CA 部门完成签发证书后会把证书发布在目录服务器中,任何人都可以查询和下载,数字证书含有 CA 认证过的公钥,私钥交由证书持有者在本地生成。证书是 CA 结构给服务端的,服务端的数字证书含有服务端公钥加上 CA 私钥加密后的 Hash 值,这个 Hash 值是服务端公钥转变后的 Hash 值,CA 私钥加密后的就是数字签名

数字证书生成的详细过程

下面我们详细看一下当 https 服务器把公钥(含有服务端公钥的数字证书)交给客户端之前,数字证书是怎么生成的吧:

  1. 服务端人员使用RSA算法生成两个密钥,一个用来加密一个用来解密。将负责加密的那个密钥公布出去,所以我们称之为公钥(Public Key),而用来解密的那个密钥,不能对外公布,只有服务端持有,所以我们称之为私钥(Private Key)。服务端在将Public Key进行分发证书之前需要向CA机构申请给将要分发的公钥进行数字签名。(服务器公钥负责加密,服务器私钥负责解密)

  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值进行匹配,如果匹配成功,则说明该证书就是相应的服务端发过来的。否则就是非法证书。

 

上一篇:Bert文本分类实践(一):实现一个简单的分类模型


下一篇:docker容器mysql开启 ssl