Ошибка Apache SSL: закрытый ключ не найден

8

Я запускаю apache на Ubuntu 14.04 и пытаюсь реализовать SSL. Любая помощь будет принята с благодарностью.

default-ssl.conf имеет:

SSLCertificateFile      /etc/apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Когда я перезапускаю apache, сообщение об ошибке в /var/log/apache2/error.log выглядит так:

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$
mikesynan
источник
как вы решили эту проблему?
Шринивас,

Ответы:

6

ВНИМАНИЕ: Никогда не размещайте свой закрытый ключ в Интернете. Даже не копируйте его на другой компьютер, рабочую станцию ​​и т. Д. Он должен быть максимально конфиденциальным.

SSLCertificateKeyFile требуется закрытый ключ. Этот ключ обычно генерируется до CSR или одновременно. Найдите файл, который начинается со строки, содержащей:BEGIN PRIVATE KEY

CSR (запрос на подпись сертификата) требуется только тогда, когда вы просите подписать сертификат. После этого вы можете отказаться от него.

Если вы потеряли закрытый ключ, вам нужно будет сгенерировать новый закрытый ключ, затем сгенерируйте новый CSR и попросите CA (центр сертификации) снова подписать CSR.

Мирча Вуцовичи
источник
1

Вот проблема:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Вы поместили здесь файл запроса на подпись сертификата (CSR) по ошибке. Вы должны поместить туда файл закрытого ключа, который вы использовали для генерации CSR. Этот файл закрытого ключа не должен быть защищен паролем, иначе вам придется вводить пароль каждый раз, когда вы (пере) запускаете Apache.

Для пользы будущих поколений, вот краткое резюме того, как генерировать CSR-ы с OpenSSL (хорошее руководство доступно из документации по Ubuntu ):

1) Сгенерируйте ключ сервера:

openssl genrsa -des3 -out server.key 2048

Для этого необходимо указать пароль.

2) Создавая секретный ключ без пароля, введите пароль, который вы использовали выше при появлении запроса:

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3) Создайте CSR с вашим закрытым ключом без пароля:

openssl req -new -key server.key -out mydomain.org.csr

где «mydomain.org» может быть вашим доменом. Вы должны ответить на несколько вопросов в интерактивном режиме. Как только вы закончите, вы отправите mydomain.org.csrфайл в свой центр сертификации. Вы получите обратно либо *.crtфайл, либо *.pemфайл. Давайте предположим, что они дали вам mydomain.org.crt. Установите его в качестве своего сертификата, а файл ключа без пароля - в качестве ключа (местоположения действительны для Ubuntu 14.04, они могут быть где-то еще в других системах, проверьте документы Apache2):

sudo cp mydomain.org.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private/mydomain.org.key

И, наконец, отредактируйте конфигурацию Apache2 (может быть default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

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

Ларикс Децидуа
источник
1

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

В моем случае у меня по ошибке был SSLCertificateFile вместо SSLCertificateChainFile для моего набора сертификатов. Эта ошибка продолжала появляться и бросала меня в тупик. Я продолжал думать, что мой закрытый ключ был неправильным.

user1283449
источник
0

Я знаю, что это сообщение старое, но я решил добавить к нему больше, поскольку это первая ссылка в поиске Google об ошибке - "Init: Закрытый ключ не найден"

Я видел, как это случилось раньше, и это оказалось плохим закрытым ключом. Я использовал strace для отслеживания последнего закрытого ключа, который попытался загрузить apache. После того, как я удалил его из каталога ssl и httpd.conf, Apache перезапустился без проблем.

Неверный ключ SSL: -rw-r ----- 1 root 754974732 1.7K, 31 мая 1987 г. /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Команда, используемая для отслеживания неверного ключа: strace -f -v -s 1024 -o strace.log service httpd start

Среда: ОС: CentSO 6.9 Панель управления: cPanel 11.64 Apache Version 2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

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

m33k
источник
Добро пожаловать в сбой сервера. Ваш пост может использовать улучшенное форматирование. Является Bad SSL Key: ... пункт , возможно , цитата? Кроме того, ваш TL; DR не нужно форматировать как code. Спасибо за помощь.
Я говорю: восстанови Монику
0

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

Команда для проверки вашего закрытого ключа:

openssl rsa -in /etc/httpd/certs/server.key -check

замените /etc/httpd/certs/server.key на полный путь к закрытому ключу вашего сервера, и если все будет хорошо, вы увидите:

RSA key ok

Надеюсь, это кому-нибудь поможет и, кстати, мой сервер был CentOS 7.6 с Apache / 2.4.6

jbrahy
источник