HTTPS的安全保障机制SSL协议
作为HTTP协议的安全扩展,HTTPS已经是网络安全中最基本的安全防护手段了。今日任何一个没有使用HTTPS保护的公开网站或者APP都是不健康并且临时的行为。在我的认知中,通过RSA方式进行基本加密的安全机制是最成熟也是最常用的。SSL则作为RSA之上公开的网络安全协议,也因此被更广泛的认可。但RSA毕竟是双方约定的一个长期行为,任何一个浏览器发起的向服务器临时请求都是用固定的密钥显然也是不可接受的,那意味着双方要都要保存一大堆的钥匙链。因此,双方如果能根据临时的会话情况,用的时候握手建立安全连接,用后即扔是大家都开心的事情。但是要让互相不认识的两个人能建立一个稳定可靠的连接,显然一个中间人是非常重要的,因此CA(Certificate Authority)出现了。引入CA后的认证流程可以参考下图(可能大家都喜欢下边这张吧):
使用HTTPS后双方握手过程相比于简单的三次握手,HTTPS交互多了对证书进行验证的过程。对于单向验证(客户端验证服务器),服务器端已经预先申请过经过CA机构签名的证书。CA机构签名的过程本质上是使用CA机构的私钥对公开证书的内容利用hash算法进行摘要,并加密的过程。在客户端向服务端发起请求后,服务端除了将自身的能力发送给客户端外,还将经过CA机构签名过的证书文件发送过来(即步骤2)。客户端根据公开信息,选择浏览器已经内置的CA公钥对签名后的摘要文件进行解密,并重新对公开的文件进行摘要。核验两者,如果一直即验证通过。之后客户端要确定后续通信中要使用的随机数对称加密密钥通过服务器发过来的证书中的密钥进行摘要并加密,发送给服务端。服务端解密后,重新计算摘要,核验后确定后续会话使用的对称密钥。并之后用对称加密密钥加密响应包发给客户端解密正常后,即完成验证过程,开始后续会话。
由于对于浏览器,只要是大厂的CA机构都会将其RSA公钥预置到浏览器中,服务器方面需要将经过CA签名的证书预制到服务器端。常见的申请流程可以参考阿里云的过程。如下图:
阿里云购买CA时可以选择的目录(2018.12.10)这里我们看到OV、DV、EV,这几个不同类型,上次学习的时候我更关注认证流程,没有对证书类型进行深入的学习。其实三者的区别在于对服务器经营企业的核验级别上。DV只是对域名级别的核验;OV是相对严格的对企业信息的核验,在验证域名所有权的同时还要通过企业信息的核验(如邓白氏或者国内的工商核验等);EV是最高级的,对涉及金融领域支付行为时更为重要,在OV的基础上还要核验银行级别信息。
对于一个拥有证书的网站,其在浏览器端的表现也是不同的可以看下图,这是简书的证书情况:
简书证书截图从上边看其已经核验了公司信息,我自己的判断认为应该属于OV级别,而对于EV级别的公司,在浏览器地址栏会直接显示公司的名字。比如:
有EV证书的网站