Я запускаю 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$
ПРЕДУПРЕЖДЕНИЕ: Никогда не размещайте свой закрытый ключ в Интернете. Не копируйте его даже на другой компьютер, рабочую станцию и т. Д. Он должен быть как можно более частным.
SSLCertificateKeyFile требует закрытого ключа. Этот ключ обычно генерируется перед CSR или одновременно. Найдите файл, который начинается со строки, содержащей: BEGIN PRIVATE KEY
CSR (запрос на подпись сертификата) требуется только тогда, когда вы просите подписать сертификат. После этого вы можете его выбросить.
Если вы потеряли закрытый ключ, вам нужно будет сгенерировать новый закрытый ключ, затем сгенерировать новый CSR и попросить CA (центр сертификации) снова подписать CSR.
Я знаю, что кто-то уже ответил на этот вопрос, но я хотел рассказать другим, что случилось со мной, когда я получил эту ошибку.
В моем случае у меня по ошибке был SSLCertificateFile вместо SSLCertificateChainFile для моего пакета сертификатов. Эта ошибка продолжала появляться и бросала меня в зацикливание. Я все думал, что мой закрытый ключ был неправильным.
Вот в чем проблема:
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
Надеюсь это поможет.
Я знаю, что это старое сообщение, но я решил, что должен добавить к нему еще, так как это первая ссылка в поиске 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 версии 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.
Надеюсь, это поможет!
Я немного покрутил колеса над этим, но убедитесь, что у вас есть полный файл закрытого ключа. Оказалось, что у меня не хватало пары строк.
Команда для проверки вашего закрытого ключа:
openssl rsa -in /etc/httpd/certs/server.key -check
замените /etc/httpd/certs/server.key полным путем к закрытому ключу вашего сервера, и если все в порядке, вы увидите:
RSA key ok
Надеюсь, это кому-то поможет, и, кстати, моим сервером был CentOS 7.6 с Apache / 2.4.6