O HAProxy não está aceitando o certificado GeoTrust reeditado

4

Solicitei a reemissão de um certificado GeoTrust à luz do bug Heartbleed. Estamos usando HAProxy 1.5-dev22 com o OpenSSL ativado. Atualizei o OpenSSL em todas as instâncias afetadas.

O PEM exigido pelo HAProxy é uma versão concatenada do certificado, dos certificados intermediários e da chave privada:

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

Eu posso validar este PEM com o OpenSSL:

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

E, em seguida, configure o HAProxy:

...snip...

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

...snip...

E, em seguida, inicie o 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!

Eu fiz a reemissão duas vezes agora e em ambas as vezes o OpenSSL pode validar o PEM. No entanto, o HAProxy parece não conseguir ler este PEM. Eu também recompilei o HAProxy com a última fonte , mas o questões ainda persistem.

Se eu reverter para o PEM anterior , o HAProxy é iniciado sem erros .

Desconsiderando o HAProxy por um segundo, de acordo com este site , posso validar se um certificado Correspondência de chave privada:

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

E quando eu o executo depois de baixar o CRT do GeoTrust, a saída é dois valores separados. De acordo com esse site, se eles correspondessem, somente um hash seria retornado.

    
por TheCloudlessSky 09.04.2014 / 19:41

1 resposta

2

Uau. Um detalhe que omiti foi que nós compramos / reemitimos nosso certificado através de um revendedor (Namecheap). Eu pedi uma re-emissão de certificado 3 vezes hoje porque pensei que estava fazendo algo funky. Liguei para o GeoTrust e perguntei sobre meus pedidos. O cara no telefone verificou todos os 3 CSRs que eu tinha enviado e todos os 3 eram diferentes dos arquivos CSR que eu enviei hoje . Ele sugeriu que tentássemos fazer a reedição diretamente através do GeoTrust. Com certeza, funcionou e a verificação do módulo retornou um valor e combinou! Gerei então o novo PEM do CRT / Intermediate CA CRT / Private Key e o HAProxy agora começa sem problemas!

Ele acha que pode ser um problema em que o Namecheap está enviando CSRs incorretos de instâncias anteriores em nossa conta (ele já viu isso antes).

    
por 09.04.2014 / 22:34