SSL安全协议、SSL证书、对称加密算法、非对称加密算法

180 阅读4分钟

一、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在向浏览器发送证书时,会发送两个证书:主证书、二级证书,浏览器会自动的去验证二级证书签发机构,以及主证书是否有效。