SSL证书的相关知识

今天要写的是关于SSL证书的几个知识点,即是更新学习,也是与众分享。
1) SHA-1 与 SHA-2
SHA是散列算法,较早期的是 SHA,后来当SHA-2出来后就被称为SHA-1了。后来还有SHA-3等等。
其实在更早的时候,还有SHA-0,随着计算机技术的进步,现在SHA-0已被淘汰,SHA-1正在淘汰中,仍然有使用但越来越多的人开始使用SHA-2算法了。
通常现在常用的SHA-2其实是SHA256。
在SSL证书签发的时候,有一个签名散列算法,会用到这个,建议只用SHA256,而不要用SHA1算法。

2) ECDHE-RSA 与 ECDHE-ECDSA
这两个是密钥交换和协商算法,非对称加密算法。在SSL连接建立的一开始,有一个密钥交换和密钥协商的过程,这个过程中用到的算法有许多,这两个是现在用的比较多的两个。因为它们具有远期保密能力,或者是完美远期保密,Perfect Forward Secrecy。
完美远期保密使用的是一次性的密钥,不能从服务器的SSL密钥推算出来,也就意味即使SSL密钥日后被盗取,过去和将来的HTTPS通讯仍然安全,窃听者无法解密通讯内容。

这两个里面其实都各自包含两部分,第一部分是一样的,ECDHE,称之为 Elliptic Curve Diffie-Hellman key Exchange,是密钥交换协议,第二部分RSA与ECDSA是加密算法,RSA是非对称加密算法,由三个提出该算法的人的姓氏首字母命名,而ECDSA是Elliptic Curve Digital Signature Algorithm,是椭圆曲线数字签名算法。在服务器同浏览器协商的时候,用RSA还是ECDHA主要由SSL证书决定,如果证书是RSA算法的CSR (Certificate SigningRequest)签下来的,那么就是RSA证书,如果用的是ECC(椭圆曲线算法)算法的CSR,签下来的就是ECC证书。服务器上安装的证书并且正确的配置之后,当然用户浏览器也支持的话,就会得到相对应的算法。

3) SSL 与 TLS
可以把它们看成是一回事,都是加密传输中的重要协议。
SSL是安全套接层,现在已经被TLS(传输层安全协议所替代。因为SSL协议已经不再安全,SSL 从 1.0,2.0到3.0,现在已经被TLS 1.0,1.1,以及TLS1.2所替代,最新的安全协议是TLS 1.2。

4) AES_128_GCM
这是加密协议,是传输的数据所用到的加密方法。现在比较流行的就是这种了。被TLS1.2以及TLS1.3所支持,是被认为安全的加密协议。RC4是另外一种,已经被认为是不安全的,已不被使用了。 AES就是AES块加密算法的意思,128就是128位的密钥,GCM是 Galois Counter Mode,是AES的一种认证模式,被普遍认为延迟小,快速的方式。

所以现在要签发一个证书给web服务器,最安全的方法是这样:

首先生成的CSR文件要用ECC算法,用来申请证书,申请下来之后的证书文件就是ECC的证书了。(ECC的兼容性问题是这样,在老旧的系统中是不被支持的,Windows Vista之前的就不支持了,IE6当然也是不支持的)

然后就是在服务器上的配置了,SSL协议就不要选择 SSLv1,SSLv2,SSLv3了,直接选择TLS协议。

在加密算法系列里同样要做好选择,RC4是一定不能再用了,最好选择就是AES GCM了。

好了先回过头来看看在浏览器中访问本站的信息是怎样的。

在Windows 7 64位电脑上,用的是Chrome浏览器,版本号 Version 48.0.2564.116 m,访问本站,然后点击网址前的绿色锁,在弹出的窗口里点击Connection标签,里面的连接信息是这样的。

使用 TLS 1.2 连接。用到的哦加密和认证算法是 AES_128_GCM,密钥交换机制是ECDHE_RSA。

在Firefox 44.0.2,点击网址前的绿色锁标志,再点击指向右边的箭头,可以看到安全连接的字样,再点击 More Information 按钮就可以看到下面的信息。

这里显示的是 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,128 bit keys, TLS 1.2。其实这样同上面的Chrome浏览器是一样的。

我们一部分一部分来看。 TLS 就是说用的是TLS连接,接下来的 ECDHE_RSA_WITH_AES_128_GCM_SHA256 就是算法套件Cipher Suite,三部分组成,包括密钥交换Key Exchange,加密算法 Cipher,以及信息验证码 MAC。
这个例子里的 ECDHE_RSA就是密钥交换算法, 而AES_128_GCM就是加密算法,而最后的SHA256就是信息验证码。