Tcp

Squid 可以用作“TLS 終止代理”來使用客戶端證書加密 TCP 連接嗎?

  • November 27, 2018

抽象的

我需要從多個客戶端到 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,但這會滿足您的需要):

例如,可以使用 stunnel 為現有的不支持 SSL 的 SMTP 郵件伺服器提供安全的 SSL 連接。假設 SMTP 伺服器期望埠 25 上的 TCP 連接。將配置 stunnel 以將 SSL 埠 465 映射到非 SSL 埠 25。郵件客戶端通過 SSL 連接到埠 465。來自客戶端的網路流量最初通過 SSL 傳遞到 stunnel應用程序,它透明地加密/解密流量並將不安全的流量轉發到本地埠 25。郵件伺服器看到一個非 SSL 郵件客戶端。

stunnel 程序可以在與不安全郵件應用程序相同或不同的伺服器上執行;但是,兩台機器通常都位於安全內部網路的防火牆後面(因此入侵者無法直接與埠 25 建立自己的不安全連接)。

引用自:https://serverfault.com/questions/780218