1. 从网络原理来看 SSL 安全协议
网络安全是当前非常受到关注的一个问题,大部分站点都是通过https来实现站点安全的,那么怎么样才能把自己的http站点变成https站点尼?我们需要了解ssl协议;
TLS 协议究竟是怎么保证http的明文消息被加密的呢?我们可以看下TLS的通用模型
TLS/SSL发展
在OSI七层模型中,应用层是http协议;那么在http协议之下,我们的表示层也就是SSL协议所发挥作用的这一层;它通过握手,交换秘钥,告警,对称加密应用数据等方式使http层没有感知的情况下做到了数据的安全加密;那么TLS是怎么做到数据的安全加密的尼?
当我们抓包或者观察服务器端的配置的时候,我们可以看类似于上图的配置;
这个安全密码的配置决定了我们的TLS协议是怎么样保证明文被加密的?
这里主要有四个组成部分
- 秘钥交换 秘钥交换是为了解决浏览器和服务器之间是怎样各自独立的生成秘钥
而最后生成的秘钥是相同的,接下来它们会用这个秘钥加密数据(ECDHE:椭圆曲线加密算法的表达) - 身份验证 在秘钥交换的过程中,我们需要验证各自的身份;而验证身份是需要算法的;(RSA算法用于身份验证)
- 密码(算法,强度,模式) AES算法 128强度 GCM模式(提高多核CPU算法性能)
- MAC或PRF SHA256是一个摘要算法,它把一个不定长度的字符串,生成固定长度的更短的一个摘要;
2. 对称加密与非对称加密各自的应用场景
在对称加密中尼是指两个想通讯的人.包括Alice ,他们共同持有一段秘钥,而Bob尼,可以把原始明文的文档,通过这把秘钥加密生成加密文档;而Alice拿到这个文档以后尼他可以拿这把秘钥把加密文档转化为原始文档;而中间的任何人如果没有持有这把秘钥;即使它知道了对称加密的算法;他也没有办法把加密文档还原成原始文档;
那么对称加密究竟是怎么实现的尼? 我们可以以RC4 对称加密的一个序列算法来看下;
采用异或算法
同时,密文可以经过秘钥进行解密成明文,进行逆运算;
所以,对称加密有一个最大的优点就是它的性能非常的好,它只需要遍历一次就可以进行加密,解密也只需要遍历一次;
非对称加密根据一个算法原理,它会生成一对秘钥;一对秘钥中,如果我们称其中一个为公钥,那么另一个就是私钥;那么公钥和私钥有什么特性尼?
就是同一份明文文档,如果用公钥加密了,那么只有经过私钥才能解密;同样的道理,如果文档用私钥加密了,那么用私钥才能解密;
3. SSL 证书的公信力是如何保证的?
在之前的加密过程中,我们谈论了Alice和Bob之间进行通讯;但是他们有个前提条件;Alice必须知道Bob就是Bob,也就是它收到的信息必须是由Bob发来的;那么这样的一个新的问题在多方通讯的一个过程中尼?
必须有一个公信机构,那么这个机构就是CA机构,接下来我们看看CA是怎么样颁发证书和证书过期的?
下面图中最右安CA就是CA机构,他负责颁发证书;而我们属于站点的维护者,就是下图最左边的证书订阅人;
首先我们作为证书订阅人,要去登记机构申请一个证书;登记机构验证订阅人的身份之后发通过CSR发送给CA机构,CA机构通过以后生成一对 公钥和私钥,公钥会在CA证书中保存着;同时把公钥和私钥发放给证书订阅人;证书订阅人拿到公钥私钥以后会将其部署到Web服务器,比如Nginx;当浏览器通过第一步访问我们https站点的时候会请求证书,而我们的Web服务器会把我们的公钥证书发送给浏览器;而浏览器会经过验证我们的证书是否是合法和有效的;CA一般是一年的有效期;那么这个有效期是怎么体验的?
CA机构会把过期的证书放到CRL服务器中;这个服务器会把所有的过期证书形成一条链条;所以它的性能非常非常的差;所以又推出了一个OCSP响应程序;OCSP可以就一个证书去查询,它是否过期;所以浏览器是可以直接去查询OCSP响应程序的;但OCSP响应程序性能还不是很高;比如我们的Nginx会有一个OCSP开关;当我们打开开关以后会由Nginx主动的去OCSP响应程序去查询;这样大量的客户端直接从Nginx就可以直接获取到证书是否有效;
那么证书是怎样组成的呢?
- DV证书:申请快,免费
- OV证书:3、4天,收费
- EV证书:更麻烦
4. SSL协议握手时Nginx的性能瓶颈在哪里?
接下来我们看下TLS的通讯过程
通讯过程中,双方主要完成四个目的;
- 验证身份
- 达成安全套件共识
- 传递秘钥
- 加密通讯