深度学习Nginx第二章:Nginx 关于SSL安全协议

 

 表示层是SSL协议所发挥作用的这一层,通过握手、发送秘钥、告警

TLS安全密码套件解读:怎么保证明文被加密的

对称加密

1>如何实现的?

其中异或有一个对称的特点,把密文和密钥同样做异或操作,就可以得到明文,所以说性能非常的好。只要遍历一次得到最终密文,解密也是一样的

非对称加密

信息加密:根据数学原理生成一堆密钥,包含公钥和私钥,同一份明文文档只有公钥加密了,私钥才能解密,如果文档用私钥加密,只有用公钥才能解密。公钥和私钥还有第二种用法,身份验证,Alice用私钥加密一段信息,发送给Bob,Bob拿到Alice公钥,公钥本来就是公开的,如果成功解开这个密文,证明这段密文确实由Alice发出的

CA是如何辨别证书和证书过期的

 从上面得知Alice和Bob进行通信的前提条件,Alice必须知道Bob就是Bob,也就是收到的信息必须是Bob发的,所以这样的通信必须在多方通讯中有一个通信机构,CA机构

  站定维护者==证书订阅者,CA是生成一堆公钥和私钥,公钥会在CA的证书内保存着,然后网站维护者会部署到Nginx,然后客户端请求,Nginx会将网站信息和公钥证书发给浏览器,浏览器验证证书是不是有效合法的,CA会把过期的证书放在CRL服务器里面,这个服务器会把所有证书形成一个链表,所以性能比较差,所以有推出来一个OCSP,可以就一个证书查询是否过期,所以浏览器会直接查询OCSP,但是OCSP响应速度还不是太高,但是我们Nginx有个OCSP开关,当打开开关后,Nginx会主动去OCSP里去查询,这样大量的客户端通过NGINX就可以获取到证书是否有效

证书类型:

DV:只能验证域名的归属是否正确,往往是免费的

OV:会去验证我们填写的机构,企业名称是否正确,比较难

EV:做了更加严格的认证,所以大多数浏览器会对其显示非常友好,会把我们在申请证书的机构名称在浏览器地址栏最左侧显示出来

如何生效的呢? 浏览器从安全角度来看对DV、OV、EV证书效果一样,唯一验证的是证书链

证书链

目前我们所有站点的组证书都是由根证书,二级证书,组证书,因为根证书的验证是非常谨慎的,像windows、安卓等操作系统每次只有一次才会更新根证书库,所以一个新的根证书库是很难加入操作系统或者浏览器(大多数浏览器是使用操作系统的根证书),所以浏览器在验证证书是否有效的时候除了验证是否过期,最主要是验证根证书是不是有效的,是不是被跟证书库认可的,而我们nginx在向浏览器发送证书的时候需要发两个证书,不是三个,因为根证书是被浏览器或者操作系统内置的,必须要发送,

根据抓包可以看出,nginx向浏览器发送证书先发送组证书,接下来发送二级证书,浏览器会自动自动验证二级证书的签发机构根证书是否有效

TLS通讯过程:

因为浏览器是多样性的,所以浏览器首先跟服务器协商自己支持的加密算法,然后服务器就加密算法有一个链,然后选择自己更倾向于那种加密套件,发送给客户端,如果希望一天的断开连接的端不用再次协商密码,那么打开session cache,然后NGINX发送给浏览器他的公钥,这个是包含证书链的,然后浏览器可以根据证书链查询到根证书,从而判断证书是否有效,这个时候在第三部和第四部之间需要把椭圆算法的参数发送给客户端,以方便再第六步生成进行加密的密钥,然后第五步,浏览器根据椭圆曲线公共参数生成自己私钥,然后把公钥发送给服务器,这个时候服务器根据自己的私钥和客户端的公钥生成双方加密的密钥,这个是第六步,然后客户端根据服务器的公钥和自己的私钥可以也生成密钥,两者生成的密钥是相同的,这个是根据非对称加密算法保证,然后根据生成的密钥进行加密和通讯

Nginx握手性能

这里Nginx主要看椭圆加密算法和非对称加密算法这两个性能,这里可以看出,握手是主要影响性能的指标,对于大文件可以考虑对称加密算法,对于nginx而言,如果小文件主要考虑nginx非对称加密性能,如果是大文件主要对称加密算法性能,如果小文件过多的时候我们可以优化椭圆曲线算法,如果是大文件的时候我们可以调整aes算法,或者看是否有别的算法可以代替

发布了83 篇原创文章 · 获赞 87 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/ligupeng7929/article/details/97752462