1、SSL/TLS
**SSL安全套接字层:**是一种加密协议,用于在网络通信中建立安全连接。它在应用层和传输层(TCP/IP)之间提供数据加密、服务器身份验证以及信息完整性验证
![](https://i-blog.csdnimg.cn/direct/1638c50b5eb1434f844d328b1aa63379.png)
SSL只保护TCP流量,不保护UDP协议
**TLS:**传输层安全协议
在SSH3.0版本后,更名为TLS
SSL协议中包含多个子协议,它们协同工作以确保通信的安全性
![](https://i-blog.csdnimg.cn/direct/abd3ee4eaba642bc8cc0d75288a4ced1.png)
**SSL握手协议:**允许服务器和客户端相互认证,并在应用层协议传输数据之前协商出加密算法,哈希算法,和会话密钥等,然后通过这些参数去构建SSL会话
**SSL密码变化协议:**只有changecipherspec这一个信息,客户端和服务器都可以发送,目的是通知对端,后续的报文都将使用新协商后的加密套件和密钥进行保护和传输
**SSL告警协议:**告警机制,用于在SSL通信过程中传递与安全性相关的告警信息
**SSL记录协议:**用于封装高层协议的数据,对应用层数据加密之后,放置在记录层中
这四个协议并不一定同时会出现,握手协议,密码变化协议和告警协议可能在建立SSL会话时按照顺序出现,在数据传输过程中主要出现的是记录协议
1)SSL工作流程
![](https://i-blog.csdnimg.cn/direct/0ff37249dac445b9829f9b365b218ab6.png)
第一步:TCP三次握手,建立网络连接会话
第二步:Client Hello
![](https://i-blog.csdnimg.cn/direct/b53619991f1c473cb77991eef9d765a1.png)
**客户端的随机数:**是生成会话密钥的一个参数,该会话密钥需要三个参数共同计算出来
**加密套件:**将加密算法、鉴别算法常用的组合搭配在一起,用于进行选择
![](https://i-blog.csdnimg.cn/direct/319b34156aa1482a81f4182d89f1629d.png)
第三步:Server Hello(SSL服务器回复消息)
![](https://i-blog.csdnimg.cn/direct/e09727d405ef4c3dab0d8b91bf010936.png)
![](https://i-blog.csdnimg.cn/direct/0e8091670b4c45f89786f042e283b0b7.png)
**注意:**一般情况下,server hello和服务器的证书是分开发送的,当然也可以在一个数据包中发送
![](https://i-blog.csdnimg.cn/direct/93148e80be374a9d8c480c2f636d2fd8.png)
![](https://i-blog.csdnimg.cn/direct/7932f4a87efd4a30a982fb41e0dcdae9.png)
服务器证书是由CA机构颁布的,是通过CA机构的私钥,将服务器的公钥以及一些证书相关的信息进行加密之后的产物。客户端本身具有信任CA的公钥,则可以使用CA机构的公钥对服务器证书进行解密,之后得到服务器的公钥。
**注意:**服务器的身份认证是强制要求的,必须提供证书,证书如果不合法,则会提供一个选择给客户,可以选择继续访问。但是客户端的认证是可选的,如果需要认证,则服务器会发送请求证书的报文,之后,需要客户端提供自己的证书
Server key exchange: 用于提示密钥变更
**Server hello done:**一条空信息,用于通知客户端服务器已经做好协商最终密钥的准备
![](https://i-blog.csdnimg.cn/direct/e57d72eed7aa48f3bbab2e8ff4e9834f.png)
也可以通过一个数据包来发送server hello以及证书等信息。
第四步:客户端回应
**Pre-master-key:**预主密钥,本质也是一个随机数,用于计算最终的会话密钥,但是这个参数可以被服务器的公钥进行加密传输(电脑生成的随机数是伪随机数,所以使用三个伪随机数计算最终的密钥,会更加安全一些。)
![](https://i-blog.csdnimg.cn/direct/5c10c79be3604f8dbb0fde4c0a26cff3.png)
第五步:服务器回应
![](https://i-blog.csdnimg.cn/direct/5e055abfb5214e98982fde4f7e8f19b4.png)
![](https://i-blog.csdnimg.cn/direct/ae7cb0a1c2ce4e26bef21663692f1d22.png)
在客户端中,可以携带这个会话复用票据,用于省略会话建立过程中,身份认证的环节,仅协商算法和密钥即可
![](https://i-blog.csdnimg.cn/direct/073a8b0959444b11a44a83e82eaebc38.png)
会话票据:客户端在下次与服务器通信时,可以携带这个Session Ticket,以告知服务器自己希望复用之前的会话密钥。
如果服务器验证通过Session Ticket的有效性,就可以直接使用其中的会话密钥,而无需再次进行完整的TLS握手过程
1、无客户端认证的握手过程
![](https://i-blog.csdnimg.cn/direct/03a829f1ca4e4fc993f246821834c7de.png)
2、有客户端认证
![](https://i-blog.csdnimg.cn/direct/e02af98c58a34c00932b69a91aaa13dc.png)
3、会话复用场景
![](https://i-blog.csdnimg.cn/direct/c9118522136348b3afae799975394fc2.png)
**SSL工作流程总结:**在TCP三次握手建立网络连接后,客户端向服务器发送Client Hello与服务器协商参数,服务端回复Server Hello确认参数并发送证书。客户端验证服务器证书,生成并使用服务器公钥加密发送预主密钥。服务器解密预主密钥并生成会话密钥,使用会话密钥进行数据传输
2)SSL协议数据传输流程
![](https://i-blog.csdnimg.cn/direct/5a932177c8ad4e248175c26a8dce287d.png)
**1. 分片(Fragmentation):**SSL协议会将较大的应用数据分成较小的数据块进行传输,以避免单个过大的数据包可能造成的网络拥塞或处理不当的问题
**2. 压缩(Compression):**SSL 3.0及其后续版本支持数据压缩功能,以减少通过网络传输的数据量,从而加快数据传输速度并节约带宽
**3. 增加HMAC(Hashing):**HMAC是一种数据完整性检验方法,用于确保数据的完整性不被破坏。SSL协议使用HMAC来确保消息的完整性,防止数据在传输过程中被篡改。
**4. 加密(Encryption):**SSL协议通过使用对称密钥加密算法(如AES、DES、3DES等)对应用层数据进行加密,以确保数据的保密性。
**5. 增加SSL记录首部(Record Header):**SSL协议的记录层负责将应用层数据转换为SSL记录,并为每个记录添加首部信息,包括版本号、SSL记录类型、序列号、以及是否包含压缩选项等信息。首部信息之后是对称密钥加密后的应用层数据。SSL记录首部提供了SSL记录的元信息,帮助后续的解密过程正确地组装和解密记录层的数据。
SSL协议脆弱性分析:
- 无法保护UDP应用
- 客户端假冒
- SSL协议不能对抗流量分析
2、SSL VPN
IPSEC在Client to LAN场景下比较吃力的表现:
- 在用户认证方面比较薄弱
- 因为需要进行参数协商,所以,IPSEC VPN需要客户端安装对应的应用程序;
- 因为需要进行感兴趣流的抓取,所以,策略需要进行调整,不太方便;
- 因为IPSEC VPN是基于网络层和传输层进行权限管理,但也仅能深入到服务层面,如果我们需要一款可以针对应用层面进行更细细颗粒管理的VPN技术,就不能选择IPSEC VPN
SSL VPN的优势:
- 因为SSL协议封装在传输层和应用层之间,仅针对应用层的数据进行保护,这样,在进行组网时,任何场景下都不会影响到网络传输;
- SSL VPN采用的是一种基于B/S架构的模式,所以,只要客户拥有浏览器就可以访问,方便快捷;
- 最主要的是,和IPSEC VPN针对网络层的控制相比,SSL VPN可以基于应用层做更细颗粒度的控制。
![](https://i-blog.csdnimg.cn/direct/6351e7d8ea1f4aaa8ca6ae0f5ae67710.png)
SSL VPN: 虚拟网关技术,是一种基于SSL加密技术的虚拟私人网络。可以理解为是用户的一个接入的接口,用户可以通过在浏览去中输入虚拟网关的IP地址(或者域名)访问到虚拟网关,这个过程需要进行用户认证,划分用户的权限。用户认证通过后,虚拟网关会向远程用户提供可也访问的内网资源列表,远程用户通过点击或者触发便可访问到内网的资源。
一台防火墙可以创建多个虚拟网关,每个虚拟网关相互独立,互不影响,不同的虚拟网关可以
配置各自的用户和资源进行单独管理。
SSL VPN的总体流程:
![](https://i-blog.csdnimg.cn/direct/0c3f98feb5024d47bfdbabfe7d577e09.png)
1)认证
![](https://i-blog.csdnimg.cn/direct/0c7a101a5fa2420c8077a7abc458d1ff.png)
本地认证: 本地认证就是用户名和密码信息在防火墙本地存储,登陆时在防火墙本地进行比对验证,由防火墙进行判断
**服务器认证:**用户名和密码信息存储在服务器上,防火墙需要将登录信息发送给服务器,由服务器进行判断,之后将结果返回给防火墙,做出对应的动作
![](https://i-blog.csdnimg.cn/direct/96ea4763007c437584c871f3db80e646.png)
**证书匿名认证:**需要客户端提交证书,防火墙通过验证客户端的证书来认证用户
![](https://i-blog.csdnimg.cn/direct/ef71fdc58d4443bf8863052725c357cb.png)
要求:
- 客户端证书和防火墙上导入的客户端CA证书由同一个CA机构颁发
- 客户端证书必须在有效期内
- 客户端证书中用户过滤字段必须是防火墙上配置已有的用户。例如,用户过滤字段的结果CN=user00019
**证书挑战认证:**比证书匿名认证多增加了用户名密码校验,可以理解为双因子验证
2)资源发布
1、Web代理
![](https://i-blog.csdnimg.cn/direct/01ea57fff49a4f129f3503efa6fb1544.png)
![](https://i-blog.csdnimg.cn/direct/84e3d40918bc4ad69cd43e2ee7bec652.png)
2、文件共享
![](https://i-blog.csdnimg.cn/direct/581fa1764e044e7f90cce6c683f71044.png)
3、端口转发
可以针对所有TCP协议的资源进行发布
使用ActiveX控件
![](https://i-blog.csdnimg.cn/direct/38af7e55657c47b8889c53a4c07bbf65.png)
4、网络扩展
需要在用户客户端上安装一张虚拟网卡,会下发一个私网的IP地址和路由
![](https://i-blog.csdnimg.cn/direct/bc9db9ec41ef4ace9660cb331c302d7e.png)
可靠传输模式:
![](https://i-blog.csdnimg.cn/direct/229e6a645c0049828de4903ec16503a8.png)
快速传输模式:
![](https://i-blog.csdnimg.cn/direct/2506322a63e647dd9c94f713ae0bab7e.png)