Ubuntu

HAProxy 和中間 SSL 證書問題

  • September 2, 2021

我們目前在驗證 Ubuntu AWS 集群上的 Comodo SSL 證書時遇到問題。瀏覽器可以很好地顯示站點/內容並顯示所有相關的證書資訊(至少,我們檢查過的所有資訊),但某些網路代理和線上 SSL 檢查器顯示我們的鏈不完整。

我們嘗試了以下方法來嘗試解決此問題:

  1. 將 haproxy 升級到最新的 1.5.3
  2. 創建了一個包含所有證書(站點、中間、w/ 和 w/out 根)的串聯“.pem”文件
  3. 在我們的 haproxy.cfg 文件中的“bind”行中添加了一個顯式的“ca-file”屬性。

“.pem”文件使用 openssl 驗證 OK。各種中間證書和根證書已安裝並顯示在 /etc/ssl/certs 中。但是支票仍然以不完整的鏈條返回。

任何人都可以建議我們可以檢查的其他任何內容或我們可以進行的任何其他更改以嘗試解決此問題嗎?

提前謝謝了…

更新: haproxy.cfg 中唯一相關的行(我相信)是這一行:

bind *:443 ssl crt /etc/ssl/domainaname.com.pem

更新2:輸出來自openssl s_client

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
  i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA

以下是www.domainname.com.pem(在 haproxy 配置中引用)的內容。

Bag Attributes
   localKeyID: 01 00 00 00
   friendlyName: www.domainname.com
subject=/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
[...]
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
[...]
-----END RSA PRIVATE KEY-----

FWIW,我設法弄清楚了這一點。問題是我用於.pem文件中各種證書的分隔符。

分隔符必須完全正確-----BEGIN/END CERTIFICATE------ 沒有“中間”或“根”或任何其他。

此外,.pemHAProxy 的工作包括我鏈中的所有中間證書和根證書——這似乎是讓它們全部獲得的唯一方法。

包含中間證書的正確順序:

-----BEGIN PRIVATE KEY----- [Your private key] -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- [Your certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#1 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#2 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Root certificate] -----END CERTIFICATE-----

awk 1 ORS='\\n' ~/your_path/cert.pem

複製字元串

並粘貼到docker-compose.yml這樣:

`proxy: image: tutum/haproxy ports:

  • “80:80”
  • “443:443” environment:
  • “DEFAULT_SSL_CERT=—–BEGIN PRIVATE KEY—–\nMIIEvQIBADA……” links:
  • webapp`

這對我有用。

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