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

抽象

我需要从多个客户端到Internet上的单个端口encryption的TCP连接。 这可以用Squid来实现吗?

具体情况

我们在我们公司使用监控和客户端pipe理解决scheme,可通过局域网和VPN访问。 现在应该可以从不使用公司VPN的外部笔记本电脑访问。 通信必须encryption(TLS)。 客户端authentication必须使用客户端证书。 通信由客户端启动,并使用单个TCP端口。

我的调查结果

NGINX Plus似乎提供了这个function,但我们的pipe理员喜欢鱿鱼或阿帕奇。 在鱿鱼维基上,我发现: function:提到TCPencryption的HTTPS(HTTP安全或HTTP over SSL / TLS) 。 但是我也发现这个警告:

注意通过CONNECT传递的协议并不局限于Squid通常处理的协议。 毫不夸张地说,任何使用双向TCP连接的东西都可以通过CONNECT隧道传递。 这就是为什么Squid默认的ACL以拒绝CONNECT!SSL_Ports开始,为什么你必须有一个很好的理由把任何types的允许规则放在它们上面。

类似的问题

此问题使用SSLencryption与squid转发代理的客户端连接是simlar,但不处理反向代理/ TLS终止代理。

我需要知道的

我只有关于这些技术的基本知识,我们的pipe理员要求我提供一般的可行性。

  • Squid可以用来保存TCP连接的encryption吗?
  • 这可以使用客户端证书进行身份validation来实现吗
  • 还是应该只用于HTTPS连接?

也许你的pipe理员不喜欢NGINX Plus因为它不是开源的,会接受另一个维护良好的开源产品。 然后让他看看stunnel 。 它是专为您的需要。

在维基百科上引用一个stunnel的例子(对于SMTP,但是这可以满足你的需求):

例如,可以使用stunnel为现有的不支持SSL的SMTP邮件服务器提供安全的SSL连接。 假设SMTP服务器期望端口25上的TCP连接。可以configurationstunnel以将SSL端口465映射到非SSL端口25.邮件客户端通过SSL连接到端口465.来自客户端的networkingstream量最初通过SSL传递到通道应用程序,它透明地encryption/解密stream量并将不安全的stream量本地转发到端口25。 邮件服务器看到一个非SSL邮件客户端。

stunnel进程可以在与不安全的邮件应用程序相同或不同的服务器上运行; 但是,这两台机器通常会在安全内部networking的防火墙后面(这样入侵者不能直接将自己的不安全连接直接连接到端口25)。

希望它有帮助,祝你好运!

CONNECT只被HTTP客户端用于HTTP代理以通过代理build立隧道。 HTTP中没有用于与HTTP代理的encryption连接的scheme。

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

我不知道Squid是否支持带有TLS和客户端证书的TCP插件,但是WinGate支持 。 它还能够validationActive Directory中证书中的UserPrincipalName。

免责声明:我为WinGate的作者Qbik工作。