Mysticbinary

Digital certificate use process (primary)

SSL证书和HTTPS的关系

HTTPS在HTTP的基础上加入了SSL加密协议,HTTP是明文传输,HTTPS是加密传输。

A quick definition:
HTTPS stands for hypertext transfer protocol secure and is the encrypted version of HTTP. It is used for secure communication across the internet or a network. The communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, Secure Sockets Layer (SSL).

How get a digital certificate?

数字证书的创建流程:
https://help.aliyun.com/document_detail/211100.html
可以通过阿里云SSL证书服务购买SSL证书,并向CA中心提交证书申请,直到证书成功签发;您将已签发的证书安装到Web服务器后,则Web服务将会通过HTTPS加密协议来传输数据。
HTTPS加密传输协议可激活客户端浏览器到网站服务器之间的SSL加密通道(SSL协议),从而实现高强度双向加密传输,防止传输数据被泄露或篡改。

安全作用
数字签名的作用是防中间人伪造、篡改;
SSL数字证书的作用是证明发件人是谁,保证收到的公钥是官方发给我的,不是被中间人篡改过的。

SSL数字证书为什么会安全?

用SSL与不用SSL证书的区别:

  • 防中间人劫持,获取明文数据;
  • 浏览器能验证服务器身份,区分官网或钓鱼网站;
  • 防中间人篡改,必要时,服务器还可以验证访客身份(可选 );

SSL证书怎么做到上面3个功能的?
请看数字证书签发、验签流程

数字证书签发、验签流程

前提一定要理解数字签名的流程.

数字证书就是给公钥做的数字签名,为什么需要给公钥做数字签名?
格式:
X.509是RFC5280定义的一种公钥证书格式(public key certificate)。
X.509证书也被称为数字Digital Certificate。
一张X.509包含一个Public Key和一个身份信息。X.509证书要么是自签发,要么是被CA签发。

把版本、发行方、过期时间、域名、公钥、证书签名等信息 合成在一个文件内,就叫数字证书。
里面的信息,根据标准格式存入,也可以根据标准格式取出。


CA签发,就是你申请证书的时,把你的信息块提交给CA,CA用他的RSA密钥给你信息块加密,
得到一个:Certificate Signature , CA的证书也会在你电脑里保存着,
这样你通过他的公钥就能解密Certificate Signature 得到H2(哈希值),
可以做对比,来判断是否篡改过。

简化版的签发、验收流程

CA 签发证书的过程,如上图左边部分:

  • 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信息进行 Hash 计算,得到一个 Hash 值;
  • 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名;
  • 最后将 Certificate Signature 添加在文件证书上,形成数字证书;

客户端校验服务端的数字证书的过程,如上图右边部分:

  • 首先客户端会使用同样的 Hash 算法获取该证书的 Hash 值 H1;
  • 通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到证书后可以使用 CA 的公钥解密 Certificate Signature 内容,得到一个 Hash 值 H2 ;
  • 最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。

证书链
但事实上,证书的验证过程中还存在一个证书信任链的问题,因为我们向 CA 申请的证书一般不是根证书签发的,而是由中间证书签发的,比如百度的证书,从下图你可以看到,证书的层级有三级:

我自己画了一下简图:

H2由上一级给你生成,在你提交信息给CA的时候,CA用他的私钥和你信息摘要生成H2.

reference

数字签名、数字证书与HTTPS是什么关系?
https://www.zhihu.com/question/52493697

一文彻底搞懂加密、数字签名和数字证书!
https://segmentfault.com/a/1190000024523772

浏览器如何验证HTTPS证书的合法性?
https://www.zhihu.com/question/37370216

手工验证一张数字证书的有效性
https://blog.yuantops.com/tech/validate_a_digital_certificate_step_by_step/
浏览器验证SSL数字证书的步骤
https://blog.yuantops.com/tech/how_do_web_broswer_validate_ssl_certificates/

posted on 2021-09-26 19:54  Mysticbinary  阅读(3138)  评论(4编辑  收藏  举报

导航