Squid 可以用作“TLS 终止代理”来使用客户端证书加密 TCP 连接吗?

Squid 可以用作“TLS 终止代理”来使用客户端证书加密 TCP 连接吗?

抽象的

我需要从多个客户端到单端口通过互联网。这可以用 Squid 实现吗?

具体情况

我们公司使用可通过 LAN 和 VPN 访问的监控和客户端管理解决方案。现在应该可以从不使用公司 VPN 的外部笔记本电脑。通信必须加密(TLS)。客户端身份验证必须使用客户端证书。通信由客户端发起并使用单个 TCP 端口。

我的调查结果

NGINX 增强版似乎提供了这个功能,但我们的管理员更喜欢 squid 或 apache。在 squid wiki 上我发现:功能:HTTPS(安全 HTTP 或基于 SSL/TLS 的 HTTP)其中提到了 TCP 加密。但我还发现了这个警告:

需要注意的是,通过 CONNECT 传递的协议不仅限于 Squid 通常处理的协议。实际上,任何使用双向 TCP 连接的东西都可以通过 CONNECT 隧道传递。这就是为什么 Squid 默认 ACL 以拒绝 CONNECT !SSL_Ports 开头,以及为什么您必须有充分的理由将任何类型的允许规则置于它们之上。

类似问题

这个问题使用 SSL 加密与 Squid 正向代理的客户端连接类似,但不处理反向代理/TLS 终止代理。

我需要知道什么

我对这些技术只有基本的了解,但我们的管理员要求我提供一般的可行性。

  • Squid 可以用于 TCP 连接的安全加密吗?
  • 可以使用客户端证书身份验证来实现吗?
  • 或者它应该只用于 HTTPS 连接?

答案1

也许你的管理员不喜欢它,NGINX Plus因为它不是开源的,而愿意接受另一个维护良好的开源产品。那么请他看看隧道. 它是根据您的需要而设计的。

引用一个 stunnel 示例维基百科(适用于 SMTP,但这也适合您的需求):

例如,可以使用 stunnel 为现有的不支持 SSL 的 SMTP 邮件服务器提供安全的 SSL 连接。假设 SMTP 服务器需要端口 25 上的 TCP 连接。可以配置 stunnel 以将 SSL 端口 465 映射到非 SSL 端口 25。邮件客户端通过 SSL 连接到端口 465。来自客户端的网络流量最初通过 SSL 传递到 stunnel 应用程序,该应用程序透明地加密/解密流量并将不安全的流量本地转发到端口 25。邮件服务器看到非 SSL 邮件客户端。

stunnel 进程可以与不安全的邮件应用程序运行在相同或不同的服务器上;但是,这两台机器通常都位于安全内部网络的防火墙后面(这样入侵者就无法直接与端口 25 建立不安全的连接)。

答案2

CONNECT 仅供 HTTP 客户端用于通过代理建立隧道。HTTP 中也没有用于与 HTTP 代理建立加密连接的方案。

我怀疑 HTTP 代理不是您在这里寻找的。

我不知道 Squid 是否支持带有 TLS 和客户端证书的 TCP 插件,但是温盖特确实如此。它还能够向 Active Directory 验证证书中的 UserPrincipalName。

免责声明:我为 Qbik 工作,他们是 WinGate 的作者。

相关内容