Ssl

HAProxy 不接受重新頒發的 GeoTrust 證書

  • May 20, 2014

鑑於 Heartbleed 錯誤,我要求重新頒發 GeoTrust 證書。我們在HAProxy 1.5-dev22啟用 OpenSSL 的情況下使用。我已經在所有受影響的實例上更新了 OpenSSL。

HAProxy 需要的 PEM 是證書、中間證書和私鑰的串聯版本:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

我可以使用 OpenSSL 驗證這個 PEM:

$ openssl verify -CAfile my_app.pem my_app.pem
my_app.pem: OK

然後配置HAProxy:

...snip...

bind *:443 ssl crt /etc/ssl/certs/my_app.pem ca-file /etc/ssl/certs/my_app.pem

...snip...

然後啟動HAProxy

$ sudo service haproxy start
* Starting haproxy haproxy
[ALERT] 098/142005 (13287) : parsing [/etc/haproxy/haproxy.cfg:16] : 'bind *:443' : inconsistencies between private key and certificate loaded from PEM file '/etc/ssl/certs/my_app.pem'.
[ALERT] 098/142005 (13287) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 098/142005 (13287) : Proxy 'secure': no SSL certificate specified for bind '*:443' at [/etc/haproxy/haproxy.cfg:16] (use 'crt').
[ALERT] 098/142005 (13287) : Fatal errors found in configuration.
  ...fail!

我現在已經重新發布了兩次,兩次 OpenSSL 都可以驗證 PEM。但是,HAProxy 似乎無法讀取此 PEM。我還使用最新源重新編譯了HAProxy,但問題仍然存在。

如果我恢復到以前的 PEM,HAProxy啟動時不會出現錯誤

暫時忽略 HAProxy,根據這個站點,我可以驗證證書/私鑰是否匹配:

(openssl x509 -noout -modulus -in my_app.crt | openssl md5 ; openssl rsa -noout -modulus -in my_app.key | openssl md5) | uniq

當我從 GeoTrust 下載 CRT 後執行它時,輸出是兩個單獨的值。根據該站點,如果它們匹配,則只會返回一個雜湊值。

哇。我省略的一個細節是我們通過經銷商(Namecheap)購買/重新頒發我們的證書。我今天要求重新頒發證書3 次,因為我認為我在做一些時髦的事情。我打電話給 GeoTrust 並詢問了我的要求。電話那頭檢查了我發送的所有 3 個 CSR,所有 3 個都與我今天發送的 CSR 文件不同。他建議我們嘗試直接通過 GeoTrust 重新發行。果然,它起作用了,模數檢查返回一個值並匹配!然後我從 CRT/Intermediate CA CRT/Private Key 生成了新的 PEM,HAProxy 現在啟動沒有任何問題!

他認為這可能是一個問題,Namecheap 從我們帳戶的先前實例中發送了不正確的 CSR(他之前已經看到過)。

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