Вопрос: Ошибка при попытке запустить Apache после установки SSL-сертификата


Я пытаюсь установить сертификат SSL, и я получаю следующие ошибки:

AH02241: Init: Unable to read server certificate from file /path/my.crt
SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=X509)
AH02312: Fatal error initialising mod_ssl, exiting.

Вот что я сделал:

Я создал свой закрытый ключ:

openssl genrsa -out my.key 2048

Я создал CSR:

openssl req -new -key my.key -out my.csr

Я предоставил CSR нашему ИТ-отделу, и они вернули crt - он начинается с

-----BEGIN CERTIFICATE-----

Мой ssl.conf имеет (my.example.com совпадает с общим именем, используемым при генерации CSR):

 <VirtualHost my.example.com:443>
   SSLEngine On
   ServerName my.example.com 
   SSLCertificateFile /path/my.crt
   SSLCertificateKeyFile /path/my.key
 </VirtualHost> 

У меня нет файлов SSLCertificateChainFile или SSLCACertificate.

Частный ключ начинается с

----BEGIN RSA PRIVATE KEY-----

Csr начинается с

-----BEGIN CERTIFICATE REQUEST-----

Я подтвердил, что оба:

openssl rsa -noout -modulus -in my.key
openssl req -noout -modulus -in my.csr 

производить тот же результат. Я не могу понять, как проверить crt - попытка как x509, так и rsa вызвать ошибку.

Должен ли этот процесс работать? Могу ли я проверить, что my.crt соответствует ключу каким-то образом?


6
2017-11-01 15:20


Источник


Можете ли вы попробовать поставить полный путь для сертификатов? "SSLCertificateFile /path/to/my.crt"? - mulaz
@mulaz: На самом деле у меня есть указанные пути, я просто их не клал - я обновил вопрос. - chris
Можете ли вы проверить, что openssl может прочитать сертификат: openssl x509 -in my.crt -text, Кроме того, какой файл perms my.crt? - Alastair McCormack
@Fuzzyfelt: Оказывается, сертификат был плохим. Если вы хотите написать сертификационное тестирование в качестве ответа, я удалю ответ и соглашусь с вами. - chris
Привет @chris, это очень щедро, но я думаю, что вы сделали гораздо лучший ответ, чем я мог, и обслуживает людей с той же проблемой. Я рад за то, что вы просто согласились, что ваш ответ длится 27 часов :) - Alastair McCormack


Ответы:


Оказывается, сертификат, который мне предоставили, был плохим.

Бег

openssl x509 -in my.crt -text

должен был работать, но поскольку сертификат был поврежден, он вызывал ошибки:

unable to load certificate
140513785948000:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:asn1_lib.c:142:
140513785948000:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
140513785948000:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509
140513785948000:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:pem_oth.c:83:

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


7
2017-11-01 17:21





Для:

SSLCertificateFile my.crt
SSLCertificateKeyFile my.key

Вы должны использовать полный путь к этим файлам, то есть:

SSLCertificateFile /home/vhosts/domain.com/keys/my.crt
SSLCertificateKeyFile /home/vhosts/domain.com/keys/my.crt

Обновите правильные пути и перезапустите Apache, чтобы применить изменения. Отправляйте сообщение с обновленной ошибкой / сообщением, если проблема остается.

-Brendan


3
2017-11-01 15:28



Наверное, я должен был упомянуть, что путь там - я просто не включил его в вопрос. - chris


Только для записи: у меня был такой же отчет об ошибке, и проблема была не в сертификате, а в конфигурации.

По ошибке я определил ключ как сертификат и сертификат как ключ. Результатом было то же сообщение об ошибке.

Ошибка возникла из-за того, что моя ссылочная конфигурация представила эти элементы в обратном порядке.

Даже пример @Brendan имеет эту ошибку, поскольку он ссылается два раза на сертификат - как для сертификата, так и для ключа.

Поэтому обязательно проверьте, что вы указываете правильные файлы в правильном параметре.


0
2018-05-24 21:04