Nginx

Haproxy:帶有自簽名證書的 SSL 加密後端

  • November 12, 2015

我正在努力配置 HAProxy,使其終止 SSL,因此只有一個地方可以配置購買的 SSL 證書。但是,我更希望與後端伺服器的連接也使用 SSL 加密。

我發現的一個建議是在後端伺服器上創建自簽名證書,然後在每個伺服器行上設置“驗證無”。…所以從瀏覽器到 HAProxy 的連接將使用官方購買的 SSL 證書,但到 HAProxy 到後端伺服器的連接將使用自簽名證書。自簽名證書的好處是它們是免費的,它們不需要更新和維護(我可以將到期時間設置在很遠的將來,避免每年都安裝新證書)。然而,可以理解的是,這為 MITM 攻擊打開了後端,並且我讀過的一些資料不推薦這樣做。

我可以配置 HAProxy 以便我可以在後端伺服器上使用自簽名證書,但也許以某種方式將 HAProxy 伺服器上的自簽名證書列入白名單?…因此 HAProxy 到後端的連接將被加密,它不會受到 MITM 攻擊,並且 HAProxy 會知道信任來自後端伺服器的自簽名證書。

我描述的可能嗎?我是 HAProxy SSL 終止的新手,因此不勝感激。

我的配置的相關部分如下:

frontend www-in
   bind *:80
   bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3

   mode http
   default_backend https-backend
   # force redirect to https
   redirect scheme https if !{ ssl_fc }

backend https-backend
   balance leastconn
   server web1 1.1.1.1:443 check ssl verify none
   server web2 2.2.2.2:443 check ssl verify none

   http-request set-header X-Forwarded-Port %[dst_port]
   http-request add-header X-Forwarded-Proto https if { ssl_fc }

這個問題與 . 並沒有真正的聯繫HAProxy,而是與管理證書和證書頒發機構有關。

不確定您使用的是哪個作業系統,因為您沒有說明這一點,但如果它是某種 Linux 風格(儘管以下適用於Debian及其衍生產品):

  • 確保您已安裝該軟體包ca-certificates
  • 您正在使用自己的證書頒發機構(ca) 創建證書。
  • your ca root cert這個 ca 放在裡面/usr/local/share/ca-certificates/name-of-your-ca/。(您可能必須自己創建文件夾name-of-your-ca。)確保your ca root cert具有.crt副檔名。

(預設情況下,/usr/local/share/ca-certificates/由 擁有root:staff,因此使用sudoorroot來執行此操作。)

  • 執行update-ca-certificates(通過sudo/ as root)。
  • 執行後,應該有一個文件/etc/ssl/cert/your-ca-root.pem符號連結到/usr/local/share/ca-certificates/name-of-your-ca/your-ca-root.crt.
  • 啟用驗證HAProxy並獲利。

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