一、TLS和SSL的关系
SSL(Secure Sockets Layer)是在1995年由网景公司推出的,SSL3.0得到了快速的发展,网景公司将SSL协议提交给RETF(国际互联网标准组织)之后,应微软的要求,改名为TLS1.0(Transport Layer Security)。
二、SSL/TLS通用模型
应用层是HTTP协议,表示层就是SSL发挥作用的地方,它通过握手、交换密钥、告警、对称加密使HTTP在没有感知的情况下做到数据加密。
三、TLS的安全密码套件
TLS的安全密码套件:
-
ECDHE(密钥交换):是椭圆曲线加密算法的表达。密钥交换是要解决浏览器和服务器之间各自生成自己的公钥和私钥,最后生成的密钥是相同的(这里有点绕,可以先看)。
-
RSA(身份验证):用于身份验证,
-
密码:即对称加密算法。
-
AES(算法):是哪种算法。
-
128(强度):加密强度有两种:一种是低加密强度,为40位或者56位;一种是高加密强度,为128位或者256位。128位强度破解耗时要在一亿万年以上。
-
GCM(模式):AES中多种分组模式,其中GCM是一种比较新的分组模式,它可以提高多核CPU加密、解密时的性能。
-
SHA256:是一个摘要算法,它能将一个不定长度的字符串转换成固定长度的摘要。
四、对称加密算法
对称加密如图所示:
Bob使用密钥对原始文档进行加密,并把加密文档发送给Alice,Alice收到之后使用密钥能够解密出原始文档。
以RC4对称序列算法为例:
密钥序列相当于密钥,明文相当于原始文档,密文相当于加密文档。由上面的例子中可以看出:
- 密钥异或明文文档=密文文档。
- 密文异或明文文档=密钥。
- 密钥异或密文文档=明文文档。
所以对称加密的性能非常好(我也不知道为啥非常好。。。。)。
五、非对称加密
与对称加密算法不一样的是这里Bob使用的是公钥,Alice是私钥。
六、SSL证书
1、
CA颁发证书以及校验证书是否过期的过程:
-
证书订阅人去登记机构进行登记,说明身份、所属机构、要做的事情。
-
登记机构通过CSR向CA申请证书,通过之后,CA机构会生成一对公钥和私钥,公钥是在CA证书中保存的。
-
证书订阅人拿到证书和公钥、私钥之后,将它们部署到自己的nginx上。
-
当浏览器第一次访问站点时,会先请求证书,nginx会把公钥证书发给浏览器。
-
浏览器会去验证证书是否合法和有效。
-
CA机构会把过期的证书放在CRL服务器上,CRL服务器上的证书会形成一个证书链,CRL服务器的性能特别差。
-
CA机构又推出OCSP程序,OCSP能够针对一个证书进行查询,但是OCSP响应程序性能还不是很好。nginx有一个OCSP开关,当这个开关打开之后,nginx会主动的到OCSP响应程序上查找。
2、证书类型一共有三种:
-
域名验证(DV)证书:只会验证域名的归属是否正确。只要域名指向的服务器是正在申请的服务器,就可以成功的申请到证书。申请是实时的。很多都是免费的。
-
组织验证(OV)证书:只会验证申请的企业、机构是否正确。OV证书申请的时间和价格要比DV证书要高。
-
扩展验证(EV)证书:浏览器对EV证书要比DV、OV证书友好,使用EV证书的域名会在地址栏中显示申请的机构名。
3、证书链
如图所示,www.taohui.pub是主证书,Encryption ...是二级证书,Root CA是根证书。所有站点主证书由三个证书构成:根证书、二级证书、主证书。
根证书的验证非常谨慎,每一个操作系统中都有一个根证书库,每一年以上才会更新一次。所以浏览器在验证证书是否有效时,除了验证证书是否过期之外,还要验证根证书是否有效,主证书是否被根证书库所认可。nginx在向浏览器发送证书时,会发送两个证书:主证书、二级证书,浏览器会自动的去验证二级证书签发机构,以及主证书是否有效。