HTTPSSSL详解之数字证书

首先,我们得搞清楚什么是数字证书,有什么作用。

数字证书是在维基百科上是这样描述的:为通信提供电子认证,用于网络身份识别。说白了就是网络中的身份证,一般用于服务器。

现实中,一般是网站的服务器向CA机构申请数字证书,用于向客户端(浏览器)证明自己的身份。在双向认证中,客户端也会申请数字证书,数字证书就跟你去公安局办身份证一样,也是要钱的。所以客户端证书一般很少,例如银行给你的U盾里就有客户端证书。数字证书在通信中向网络的一方证明数字证书持有者的身份,就像身份证证明你的身份一样。

数字证书的结构(基于 x.509 证书标准):

1 证书格式版本号

2 证书序列号

3 证书签名算法

4 证书颁发者

5 证书有效期

6 对象的名称

7 对象的公开密钥

8 其它信息

9 证书颁发机构的数字签名 (对前面8项内容进行哈希散列形成固定摘要,加上颁发者私钥参数做参数,用证书签名算法最终形成签名)

可以做个比喻,数字证书就如现实生活中的身份证(用于证明持证人身份),CA 机构就是现实整的公安机关(颁发证件可信度高),而证书上的公钥信息就类似于身份证的照片,数字证书的签名就相当于身份证的章印(证明是公安机关的)。

申请数字证书的流程

1 申请者(一般是服务器)自己生成申请证书的证书请求和私钥,证书请求一般是 cer 文件,里面包含服务器公钥等信息。

2 服务器向证书认证机构(权威CA机构)递交证书请求。

3 CA 机构核对服务器的证书请求。(核对是物理过程,很严格)

4 CA 核对完毕,会给服务器颁发数字证书server.crt(物理过程)。证书包含公钥和 CA 签名等信息。

5 申请者使用数字证书

数字证书的验证流程

1 将证书除最后签名外的所有信息(如证书结构里的8项信息)进行哈希,生成摘要1.

2 对证书最后的数字签名,用证书的签名算法,加上证书颁发者的公钥,最后生成摘要2.(此处颁发者的公钥默认是浏览器内置的,证书最后的签名是CA签的,验证用的对应是CA的公钥)

3 对比摘要1和摘要2,若相等,则证明该数字证书是合法的机构颁发的,证书信息也是可信的

原文链接:https://www.jianshu.com/p/b1b9127f5cda

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享