2015-01-14 10 views
21

HAProxy не запускается больше, это показывает ошибкуHAProxy - не удалось загрузить SSL закрытый ключ из файла PEM

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

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

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

Это структура файла 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, тогда все в порядке.

ответ

7

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

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

18

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

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

это порядок в моем файле PEM, как вы можете увидеть в моем вопросе ... но спасибо – efdev1234

+1

Этого ответ решил мою проблему. Спасибо вам с той же ошибкой! Я забыл объединить файлы. – Eye

+0

Возможно, это изменилось, потому что я работал с закрытым ключом перед публичным сертификатом в файле PEM. Я получал ту же ошибку, но в моем случае это было из-за того, что я запускал HAProxy в Docker, но забыл добавить том в контейнер, чтобы HAProxy мог видеть PEM. – NickRamirez

0

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

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

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

4

Я также столкнулся с этой ошибкой. Возможно, вам захочется попытаться удалить кодовую фразу из закрытого ключа, прежде чем вы начнете разорвать ваши волосы. Это решило проблему для меня. Я думаю, 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

2

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

----- END CERTIFICATE ---------- НАЧАТЬ RSA PRIVATE KEY ---- -

После того как я разделить его, я мог бы начать HAproxy и загрузить его OK:

* ----- END CERTIFICATE -----

----- нАЧАТЬ RSA PRIVATE кнопочная ---- *

Надеется, что это помогает

T

Смежные вопросы