Подтвердить что ты не робот

Haproxy - невозможно загрузить закрытый ключ SSL из файла PEM

haproxy больше не запускается, он показывает ошибку

bind <ip>:443' : unable to load SSL private key from PEM file ...

Мы ничего не изменили в сертификатах или конфигурации. Начиная с последнего старта мы только делали обычные обновления для системы.

Чтобы найти ошибку, я сгенерировал совершенно новый сертификат (self signed), но ошибка все еще существует.

Это структура файла PEM:

-----BEGIN CERTIFICATE-----
MIIDXjCCAkY...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKC....
-----END RSA PRIVATE KEY-----

Я также попытался преобразовать закрытый ключ с помощью

openssl pkcs8 -topk8 -inform pem -in server.key -outform pem -nocrypt -out server_new.key

но haproxy по-прежнему показывает ту же ошибку.

Я пытаюсь часами, но я не могу найти причину. Пожалуйста помоги! Спасибо!

Update:

Проблема имеет какое-то отношение к доступу к файлу. Файл PEM хранился в /data/ssl/domainname/domainname.pem. Права файлов в порядке. Когда я перемещаю файл PEM в /etc/haproxy, все в порядке.

4b9b3361

Ответ 1

Проблема, с которой я столкнулась в CentOS, заключалась в том, что SELinux мешал. Чтобы проверить, является ли проблема SELinux, выполните следующие действия как root: setenforce 0, затем попробуйте перезапустить haproxy. Если он работает, возникает проблема SELinux. (Теперь вы можете снова включить SELinux и попытаться устранить основную проблему с помощью команды setenforce 1).

Поскольку у меня есть сертификаты в папке /etc/haproxy/certificates, следующая команда работала для получения правильных разрешений на файлы restorecon -v -R /etc/haproxy (в зависимости от вашей ОС и конфигурации SELinux это может работать или не работать).

Ответ 2

Важным является порядок, в котором файлы сертификата и ключей отображаются в pem. Для создания файла pem используйте следующую команду.

cat example.com.crt example.com.key > example.com.pem

Ответ 3

Я также столкнулся с этой ошибкой. Возможно, вам захочется попытаться удалить кодовую фразу из закрытого ключа, прежде чем вы начнете разорвать ваши волосы. Это решило проблему для меня. Я думаю, что HAProxy должен попросить вас пароль при перезапуске, но в моем случае это не помогло, используя 'sudo/etc/init.d/haproxy restart

Чтобы удалить пароль, попробуйте 'openssl rsa -in [PRIVATE_KEY_FILE] -out nopassphrase.key'

Является ли кодовая фраза необходимой? Там обсуждение в ссылке ниже. https://security.stackexchange.com/questions/70495/ssl-certificate-is-passphrase-necessary-and-how-does-apache-know-it

Ответ 4

Для меня проблема была вызвана этой строкой в ​​объединенном файле PEM:

----- КОНЕЦ СЕРТИФИКАТА ---------- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA -----

После того, как я разделил его, я мог запустить HaProxy и загрузить его в порядке:

* ----- КОНЕЦ СЕРТИФИКАТА -----

----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA ----- *

Надеюсь, что это поможет

Т

Ответ 5

Проблема для меня была странным персонажем в начале ключа.

Этот символ не отображался, когда я cat редактировал файл, потому что символ был <feff>, иначе известный как спецификация UTF-8 (порядок байтов Марк). Он появился только тогда, когда я открыл файл в vim.

Я бы не ожидал, что это будет очень распространено, но, надеюсь, это избавит кого-то от головной боли.