抽象的
我需要从多个客户端到 Internet 上的单个端口的加密 TCP 连接。这可以用 Squid 实现吗?
具体情况
我们在公司中使用可通过 LAN 和 VPN 访问的监控和客户端管理解决方案。现在应该可以从不使用公司 VPN 的外部笔记本访问它。通信必须加密 (TLS)。客户端身份验证必须使用客户端证书。通信由客户端发起并使用单个 TCP 端口。
我的调查结果
NGINX Plus似乎提供了这个功能,但我们的管理员更喜欢 squid 或 apache。在 squid wiki 我发现:特性:HTTPS(HTTP Secure 或 HTTP over SSL/TLS),其中提到了 TCP 加密。但我也发现了这个警告:
重要的是要注意通过 CONNECT 传递的协议不仅限于 Squid 通常处理的协议。从字面上看,任何使用双向 TCP 连接的东西都可以通过 CONNECT 隧道传递。这就是 Squid 默认 ACL 以 deny CONNECT !SSL_Ports 开头的原因,以及为什么您必须有充分的理由在它们之上放置任何类型的允许规则。
类似的问题
这个问题Encrypt client connection with squid forward proxy using SSL很相似,但不处理反向代理/TLS 终止代理。
我需要知道的
我只有关于这些技术的基本知识,我们的管理员问我一般可行性。
- Squid 可以用于保存 TCP 连接的加密吗?
- 这可以使用带有客户端证书的身份验证来实现吗?
- 还是应该只用于 HTTPS 连接?
也许您的管理员不喜欢
NGINX Plus
它,因为它不是开源的,并且会接受另一个维护良好的开源产品。然后让他看看stunnel。它专为满足您的需求而设计。在wikipedia上引用一个 stunnel 示例(对于 SMTP,但这会满足您的需要):
CONNECT 仅由 HTTP 客户端使用到 HTTP 代理以通过代理建立隧道。HTTP 中也没有用于与 HTTP 代理的加密连接的方案。
我怀疑 HTTP 代理不是您要在这里寻找的。
我不知道 Squid 是否支持带有 TLS 和客户端证书的 TCP 插件,但WinGate支持。它还能够将证书中的 UserPrincipalName 验证到 Active Directory。
免责声明:我为 Qbik 工作,他们是 WinGate 的作者。