Squid TLS 握手流程
Squid程序流程
ACL简单配置(访问控制列表)
更多资料参考:https://subscription.packtpub.com/book/networking_and_servers/9781849513906
ssl_bump 侦听https connect 实现url过滤
在 Squid 服务中配置 SSL Bumping (kaspersky.com)
前因
HTTP通信,在Squid中可以正常识别method和详细urlpath,但是HTTPS通信时,method一律识别成CONNECT,并且只显示domain,不显示详细urlpath;所以,有关url_regex和urlpath_regex的过滤都无法生效。如果想让squid能获取详细urlpath和method的话就需要把Squid设置成一个中间人。
参考:
https://support.kaspersky.com/kwts/6.1/zh-Hans/166244.htm
https://blog.csdn.net/ken6328/article/details/105730333
https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit#Features.2FDynamicSslCert.Create_Self-Signed_Root_CA_Certificate
https://blog.csdn.net/zcmain/article/details/98737243
TLS握手过程
源码流程
参考
https://wiki.squid-cache.org/Features/SslPeekAndSplice
https://www.jianshu.com/p/71c43aa7438f
SSL bump
如果在http_port上收到 CONNECT 请求(或在https_port截获新连接),前提是该端口配置了 ssl-bump 标志,则将参考此选项。连接上的后续数据要么被视为HTTPS并解密,要么在TCP级别通过隧道而不解密,具体取决于第一个匹配的碰撞"操作"。
关键词
Bump:
当使用sslbump1,优先和客户端建立安全连接,然后连到服务器。使用sslbump2时,与服务器建立安全连接,并使用模拟的服务器证书与客户端建立安全连接。
Splice:
成为TCP隧道,而不解密代理流量。
Peek:
接收客户端(步骤 SslBump1)或服务器(步骤 SslBump2)证书,同时保留slice连接的可能性。服务器证书在peek时(在步骤 2 期间)通常可防止在步骤 3 中出现的bump连接。
Stare:
接收客户端(步骤 SslBump1)或服务器(步骤 SslBump2)证书,同时保留连接bump的可能性。服务器证书在stare时(在step 2 期间)通常会排除在step 3 中的splice连接。
Terminate:
关闭客户端和服务器连接。
步骤 SslBump1 中可用的向后兼容性操作:
Client-first:
Bump连接。首先与客户端建立安全连接,然后连接到服务器。此旧模式不允许 Squid 模拟服务器 SSL 证书,并且不适用于截获的 SSL 连接。
Server-first:
Bump连接。首先与服务器建立安全连接,然后使用模拟的服务器证书与客户端建立安全连接。适用于 CONNECT 请求和截获的 SSL 连接,但不允许根据 SSL 握手信息做出决策。
Peek-and-splice
Peek and splice 根据客户端到squid和服务器到squid 的 SSL hello消息决定是bump还是splice连接。
配置实例如下:
Bump步骤:
step1:
1. 从客户端获取 TCP 级别的信息。
- 在转发代理环境中,还要分析 CONNECT 请求。
- 在拦截环境中,使用 TCP 级别信息创建虚假的 CONNECT 请求。
- 使用上面提到的 CONNECT 请求完成标注序列。
- 评估所有ssl_bump规则并执行第一个匹配操作(splice、bump、peek、stare或terminate)。
step 1 是始终执行的唯一步骤。*
Step2:
1. 从客户端获取 TLS 客户端 Hello 信息,包括 SNI(如果可用)。调整步骤 1 中的 CONNECT 请求以反映 SNI。
2. 使用上面提到的调整后的 CONNECT 请求完成标注序列。
3. 再次评估所有ssl_bump规则并执行第一个匹配操作(splice、bump、peek、stare或terminate)。
- 此步骤在peek时通常使第3步的bump变得不可能。
- 此步骤在stare时通常使步骤3的splice是不可能的。
仅当在上一步中匹配了peek或stare规则时,才会执行step 2。
如果此步骤是最终步骤(即,没有步骤 3),则调整后的 CONNECT 请求将在此步骤录入access.log。但是,在splice时,调整后的 CONNECT 将连接到生成的隧道,并且在关闭该隧道之前不会记录。
step3:
1. 从服务器获取 TLS 服务器hello信息,包括服务器证书。
2. 验证 TLS 服务器证书。
3. 再次评估所有ssl_bump规则,并对连接执行第一个匹配操作(splice、bump或terminate)。
仅当在上一步中匹配peek或stare规则时,才会执行步骤 3。
在此步骤中,调整后的 CONNECT 请求始终录入access.log(当然,如果 Squid 进入此步骤)。但是,在splice时,调整后的 CONNECT 将连接到生成的隧道,并且在关闭该隧道之前不会记录。
在大多数情况下,步骤 3 中唯一有意义的选择是是否终止连接。splice和bump的决定通常由peek或stare前一步决定。
Squid 配置必须平衡获取更多信息的愿望(通过延迟最终操作)和执行某个最终操作(有时不能再延迟)的要求。
建立链接到优先级
本文来自博客园,作者:{心亘久},转载请注明原文链接:https://www.cnblogs.com/zhaodejin/p/16015356.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix