У меня есть сервер CentOS 7 с HAProxy 1.6 спереди и Apache 2.4 сзади.
Я пытаюсь загрузить сертификаты SSL в HAProxy, однако он ожидает .pem
файл.
У меня есть следующие файлы от Comodo:
И попытался слить certificate.crt
и certificate.key
:
cat certificate.crt certificate.key > haproxy1.pem
Это работает, однако Chain Issues
ошибка. Тоже пробовал слить cabundle.crt
, certificate.crt
и certificate.key
в один .pem
файл. Но это дает мне SSL handshake failure
в журнале HAProxy.
Как заставить это работать правильно?
Содержимое файла
cabundle.crt
-----BEGIN CERTIFICATE-----
hash
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
hash
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
hash
-----END CERTIFICATE-----
certificate.crt
-----BEGIN CERTIFICATE-----
hash
-----END CERTIFICATE-----
certificate.key
-----BEGIN PRIVATE KEY-----
hash
-----END PRIVATE KEY-----
haproxy.cfg
frontend public
bind *:80
bind *:443 ssl crt /etc/ssl/certs/private/
Исправлено, выполнив следующие действия:
Мой интернет-провайдер предоставляет мне расшифрованный закрытый ключ, если я предоставляю кодовую фразу, но это дает мне другой результат, чем когда я сам расшифровываю его с помощью openssl.
Поэтому я загрузил зашифрованную версию и сам расшифровал ее с помощью ключевой фразы:
openssl rsa -in certificate.key -out rsa.key
Это дает мне файл, начинающийся с -----BEGIN RSA PRIVATE KEY-----
вместо того -----BEGIN PRIVATE KEY-----
от интернет-провайдера и другого содержимого base64.
Также очевидно cabundle.crt
включает корневой сертификат (этот первый блок), который не нужен, поэтому я удалил его.
Затем я объединил эти файлы вместе:
cat certificate.crt cabundle.crt rsa.key > domain.com.pem
Также указал это прямо в haproxy.cfg
файл, чтобы предотвратить загрузку неправильного файла:
frontend public
bind *:80
bind *:443 ssl crt /etc/haproxy/ssl/domain.com.pem
Я все еще получаю Проблемы с цепочкой: неправильный порядок предупреждение от SSLLabs, но, тем не менее, оно работает, поэтому меня это не особо беспокоит.