HTTPS:证书

一、前言

在上一篇文章中我们介绍了,SSL的基本加密过程,如下

不过遗憾的是,这种加密过程还是存在一些问题的,那就客户端无法保证自己收到的公钥就是服务器发送过来的货真价实的公钥,还有可能是中间人利用劫持技术将公钥给替换了。因此为了解决上述问题,我们引入了证书机制。

二、证书

公钥证书是由数字证书认证机构(CA)和其相关机关颁发的

证书机制的工作流程如下:

在这整个通信中,数字证书机构的公钥必须安全给客户端,如果还是使用通信的方式获取这个认证公钥,那么这个认证公钥还是有被篡改的风险。因此,鉴于这种情况,多数浏览器开发商发布版本的时候,会事先在内部植入常用认证机关的公钥。如下:

如何弄自己的https证书(HTTPS证书)(1)

2.1 证书签发过程

签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名。证书包含:公钥 申请者与颁发者的相关信息 签名。

2.2 完整通信步骤

如何弄自己的https证书(HTTPS证书)(2)

如何弄自己的https证书(HTTPS证书)(3)

如何弄自己的https证书(HTTPS证书)(4)

如何弄自己的https证书(HTTPS证书)(5)

如何弄自己的https证书(HTTPS证书)(6)

如何弄自己的https证书(HTTPS证书)(7)

如何弄自己的https证书(HTTPS证书)(8)

如何弄自己的https证书(HTTPS证书)(9)

抓包对比分析:

如何弄自己的https证书(HTTPS证书)(10)

三、EV SSL证书

如果这个证书的作用一个是证明通信一方服务器是否规范,一个作用是服务器背后的运营企业是否真实存在,这样的证书就叫做EV SSL证书

四、客户端证书

HTTPS中还可以使用客户端证书,以客户端证书进行客户端认证,证明服务器通信的客户端是预料之内的客户端。

想要获取客户端证书,用户得自己安装客户端证书,这种证书一般在网上银行采用的比较多,有时候在登陆网银时,不仅要求用户确认输入ID和密码,还会要求用户的客户端证书,以确认用户是否为特定的终端访问

五、自签名证书

如果我们使用openssl这套开源程序给自己构建了一套认证机构,从而实现自己给自己办法服务器证书,但是由于该服务器证书在互联网上不可作为证书使用,似乎也没有什么帮助,因为客户端无法验证证书的有效性。主要还是起到了加密的作用。

对于这种独立构建的认证机构叫做自认证机构,由自认证机构办法的无用的证书也被成为自签名证书。浏览器访问这种使用自签名时会出现警告信息,如下:

如何弄自己的https证书(HTTPS证书)(11)

六、总结

即使HTTPS如此安全,但是还是有很多的Web网站未使用HTTPS,其中一个原因时相比于纯文本通信,加密通信会消耗更多的CPU以及内存资源,如果每次通信都加密,会消耗相当多的资源,因此如果是非敏感信息则使用HTTP通信(可能会有劫持,网页上会出现广告)。

,