根据Heartbleed错误,我要求重新颁发GeoTrust证书。 我们使用启用了OpenSSL的HAProxy 1.5-dev22 。 我已经在所有受影响的实例上更新了OpenSSL。
HAProxy要求的PEM是证书,中间证书和私钥的连接版本:
-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----
我可以用OpenSSLvalidation这个PEM:
$ openssl verify -CAfile my_app.pem my_app.pem my_app.pem: OK
然后configurationHAProxy:
...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都可以validationPEM。 但是,HAProxy似乎无法读取此PEM。 我也重新编译了HAProxy与最新的来源,但问题仍然存在。
如果我恢复到之前的PEM ,HAProxy将无误启动 。
无视HAProxy一秒钟,根据这个网站 ,我可以validation,如果一个证书/私钥匹配:
(openssl x509 -noout -modulus -in my_app.crt | openssl md5 ; openssl rsa -noout -modulus -in my_app.key | openssl md5) | uniq
当我从GeoTrust下载CRT后运行它时,输出是两个单独的值。 根据该网站,如果他们匹配只有一个哈希将返回。
哇。 我省略的一个细节是我们通过经销商(Namecheap)购买/重新签发我们的证书。 我今天要求重新发行证书三次 ,因为我以为我在做一些有趣的事情。 我打电话给GeoTrust并询问了我的要求。 电话里的那个人检查了我发来的所有3个CSR,而这三个CSR都与我今天发送的CSR文件不同 。 他build议我们尝试通过GeoTrust直接进行补发。 果然,它的工作和模数检查返回一个值,并匹配! 然后,我从CRT / Intermediate CA CRT / Private Key生成新的PEM,HAProxy现在开始没有任何问题!
他认为这可能是一个问题,Namecheap从我们账户的以前的实例发送不正确的CSR(他以前见过)。