Назад | Перейти на главную страницу

HAProxy не принимает повторно выпущенный сертификат GeoTrust

Я запросил перевыпуск сертификата GeoTrust в связи с ошибкой Heartbleed. Мы используем HAProxy 1.5-dev22 с включенным OpenSSL. Я обновил OpenSSL для всех затронутых экземпляров.

PEM, который требует HAProxy, представляет собой объединенную версию сертификата, промежуточных сертификатов и закрытого ключа:

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

Я могу проверить этот PEM с помощью OpenSSL:

$ 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

И когда я запускаю его после загрузки CRT из GeoTrust, на выходе получается два отдельные значения. Согласно этому сайту, если они совпадают, будет возвращен только один хэш.

Вот это да. Я пропустил деталь, заключающуюся в том, что мы покупаем / перевыпускаем наш сертификат через торгового посредника (Namecheap). Я запросил повторную выдачу сертификата три раза сегодня, потому что я думал, что делаю что-то фанковое. Я позвонил в GeoTrust и спросил о моих запросах. Парень по телефону проверил все 3 отправленных мной CSR и все 3 файла отличались от файлов CSR, которые я отправил сегодня. Он предложил попробовать переиздание напрямую через GeoTrust. Конечно, это сработало, и проверка модуля вернула одно значение и совпало! Затем я сгенерировал новый PEM из CRT / промежуточного CA CRT / закрытого ключа, и теперь HAProxy запускается без каких-либо проблем!

Он считает, что проблема может заключаться в том, что Namecheap отправляет неверные CSR из предыдущих экземпляров нашей учетной записи (он видел это раньше).