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

Проблема с HAProxy и промежуточным сертификатом SSL

В настоящее время у нас возникла проблема с проверкой сертификата Comodo SSL в кластере Ubuntu AWS. Браузеры нормально отображают сайт / контент и показывают всю соответствующую информацию о сертификатах (по крайней мере, все те, которые мы проверили), но некоторые сетевые прокси и онлайн-средства проверки SSL показывают, что у нас неполная цепочка.

Мы попытались решить эту проблему следующим образом:

  1. Обновил haproxy до последней версии 1.5.3
  2. Создан объединенный файл ".pem", содержащий все сертификаты (сайт, промежуточный, без корневого и без корневого).
  3. Добавлен явный атрибут «ca-file» в строку «bind» в нашем файле haproxy.cfg.

Файл ".pem" проверяет ОК с помощью openssl. Различные промежуточные и корневые сертификаты установлены и отображаются в / etc / ssl / certs. Но чеки по-прежнему возвращаются с неполной цепочкой.

Может ли кто-нибудь посоветовать что-нибудь еще, что мы можем проверить, или любые другие изменения, которые мы можем внести, чтобы попытаться исправить это?

Спасибо заранее...

ОБНОВИТЬ: Единственная релевантная строка из haproxy.cfg (я полагаю) - это:

bind *:443 ssl crt /etc/ssl/domainaname.com.pem

ОБНОВЛЕНИЕ 2: Вывод из openssl s_client

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA

Ниже приводится содержание www.domainname.com.pem (упоминается в конфигурации haproxy).

Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: www.domainname.com
subject=/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
[...]
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
[...]
-----END RSA PRIVATE KEY-----

Правильный порядок включения промежуточных сертификатов:

-----BEGIN PRIVATE KEY----- [Your private key] -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- [Your certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#1 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#2 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Root certificate] -----END CERTIFICATE-----

awk 1 ORS='\\n' ~/your_path/cert.pem

копировать строку

и вставьте в docker-compose.yml как это:

proxy: image: tutum/haproxy ports: - "80:80" - "443:443" environment: - "DEFAULT_SSL_CERT=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADA......" links: - webapp

Для меня это работа.

FWIW, мне удалось разобраться в этом. Проблема заключалась в разделителях, которые я использовал для различных сертификатов в моем .pem файл.

Разделитель должен быть точно -----BEGIN/END CERTIFICATE----- - никаких "ПРОМЕЖУТОЧНЫХ" или "КОРНЕЙ" или чего-либо в этом роде.

Также рабочий .pem ведь HAProxy включает в себя все промежуточные и корневые сертификаты в моей цепочке - казалось, это единственный способ получить их все.