鉴于 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 后运行它时,输出是两个单独的值。根据该站点,如果它们匹配,则只会返回一个哈希值。