Вопрос: Ошибка SSL - невозможно прочитать сертификат сервера из файла


Сегодня я установил SSL для своего домена, и я столкнулся с другой проблемой - я надеялся, что кто-то может пролить свет.

Я продолжаю получать следующие сообщения об ошибках:

[error] Init: невозможно прочитать сертификат сервера из файла /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
[ошибка] Ошибка библиотеки SSL: ошибка 218529960: 0D0680A8: процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег
[ошибка] Ошибка библиотеки SSL: ошибка 218595386: 0D07803A: asn1 процедуры кодирования: ASN1_ITEM_EX_D2I: вложенная ошибка asn1

Я запускаю Apache 2.2.16 и Ubuntu 10.10. В моем .crt-файле есть теги «Начало и конец», и он был скопирован точно из письма с подтверждением, которое я получил, очень расстраивающего!

Ура!

Изменить >> При попытке проверить .crt Это не работает:

>> openssl x509 -noout -text -in domain.com.crt
невозможно загрузить сертификат
16851: ошибка: 0906D06C: PEM-процедуры: PEM_read_bio: нет стартовой строки: pem_lib.c: 650: Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ

Также >>

>> openssl x509 -text -inform PEM-in domain.com.crt
невозможно загрузить сертификат
21321: ошибка: 0906D06C: PEM-процедуры: PEM_read_bio: нет стартовой строки: pem_lib.c: 650: Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
>> openssl x509 -text -inform DER -in domain.com.crt
невозможно загрузить сертификат
21325: ошибка: 0D0680A8: asn1 процедуры кодирования: ASN1_CHECK_TLEN: неправильный тег: tasn_dec.c: 1316:
21325: ошибка: 0D07803A: asn1 процедуры кодирования: ASN1_ITEM_EX_D2I: вложенная ошибка asn1: tasn_dec.c: 380: Тип = X509

Edit >> (Приветствия за помощь, кстати)

>> grep '^ -----' domain.com.crt
----- НАЧАТЬ СЕРТИФИКАТ -----
----- КОНЕЦ СЕРТИФИКАТА -----

Просто по электронной почте компания, предоставляющая сертификат, они ответили>

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

  • в настоящее время crt настроен на mysite.com.crt - я использовал domain.com.crt в качестве примера

31
2017-09-29 16:56


Источник


Не могли бы вы показать нам вывод grep '^-----' domain.com.crt? - quanta
Williamsowen, весь пункт сертификата должен быть показан всем, кто подключается к вашему веб-серверу; это не частная вещь. Что вы дадите, рассмотрите ли вы здесь или разместите здесь весь сертификат, чтобы мы могли смотреть прямо на него, а не на то, чтобы угадать? - MadHatter
Подождите, я вижу, вы только что приняли мой ответ. Означает ли это, что причиной были проблемы с терминальными линиями Windows? - MadHatter
MadHatter - извинения! Но к этому, но я только что получил его работу, форматирование из письма, которое я получил, не было, не могли бы поблагодарить вас, ребята, достаточно! - williamsowen


Ответы:


Возможно ли, что линии ^ М-оканчиваются? Это потенциальная проблема при перемещении файлов из Windows в системы UNIX. Один простой способ проверить - использовать vi в режиме «показать мне двоичный», с vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt,

Если каждая строка заканчивается на контроле-M,

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

у вас есть файл в формате Windows с завершением строки, и apache не любит их.

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


43
2017-09-29 21:38



Для меня это была ошибка копирования и вставки, опуская первые пару символов заголовка -----BE... Спасибо за вдохновение, чтобы дважды проверить! - cfi
Спасибо, это была моя проблема! В блокноте ++ в окнах вы можете использовать диалог преобразования EDIT-EOL для изменения заданного правильного формата LF. И вы можете использовать меню Show-Show Symbol, чтобы увидеть окончание строк в Windows CR LF. - Bjørn
Мой сертификат просто оказался пустым файлом. Что-то сорвалось в поколении, я думаю. Этот ответ побудил меня открыть его и увидеть. - flickerfly
Примечание для пользователей Windows: вам, вероятно, потребуется преобразовать формат строки в UNIX, даже если вы находитесь в Windows. DOS2UNIX - это не команда Windows, а Linux. Хорошая новость, Git для Windows предоставляет его. CigWin, вероятно, тоже делает, но не уверен в этом. - Ignacio Segura
Примечание для пользователей Windows: список разрешений на вкладке Свойства / Безопасность проводника Windows перепутался после копирования файла с ограниченными правами из общего сетевого ресурса с помощью cg Cygwin. Например, я увидел «NUL SID», отключен для всех пользователей и пользователей домена. - eel ghEEz


Для тех, кто приходит на эту страницу с аналогичной ошибкой при попытке прочитать запрос на подпись сертификата (CSR) (обратите внимание, что OP читает сертификат): убедитесь, что используете правильную команду OpenSSL. x509 для сертификатов и req для CSR:

openssl req -in server.csr -text -noout

против

openssl x509 -in server.crt -text -noout

15
2017-12-26 11:21





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

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

вместо:

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Что-то проверить, если вы получаете эту ошибку.


12
2017-07-16 10:46



Просто сделал ту же ошибку, спасибо за то, что указал мне на решение :-) - rcomblen


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

Это заняло несколько часов, чтобы диагностировать, и, в конце концов, я просто догадался об этом и отредактировал сертификат в vi и удалил существующие символы «-» и перепечатал их.

Надеюсь, это поможет кому-то.


10
2018-04-26 14:53





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

Я обнаружил это, зайдя в следующее полезное руководство: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

все, что я должен был сделать, это переименовать мой .crt в .pem, и я закончил! В руководстве указано, что ошибки из вопроса OP подразумевают, что входной файл уже отформатирован PEM, поэтому попытка конвертировать его в .pem из формата DER не может быть выполнена и на самом деле не нужна.


8
2017-10-29 18:51





>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Я подозреваю, что у вас возникла проблема с форматом сертификата.

Запустите обе следующие команды и дайте нам вывод:

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt 

7
2017-09-30 03:34



Спасибо за этот ответ. Я смог определить формат, который предоставил SA, поскольку «.cer» уже был «.pem», инкогнито - javafueled


Убедитесь, что ваш файл не имеет конечных или ведущих пробелов в файле сертификата. Внимательно следите за тем, чтобы в вашем файле сертификата не было пробелов или пробелов, выбрав весь текст и поиск пробелов в текстовом редакторе.

Также проверьте, действительно ли все сконфигурированные файлы существуют и являются правильными.

Например: на другом посту вы говорите, что ваш .key-файл назван мойdomain.com.crt, а на настройке vhost у вас есть domain.com.crt

SSLCertificateFile /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
SSLCertificateKeyFile /etc/apache2/domain.ssl/domain.ssl.key/domain.com.key
SSLCertificateChainFile /etc/apache2/domain.ssl/ca.crt
SSLCACertificateFile /etc/apache2/domain.ssl/gs_intermediate_ca.crt

Проверьте еще раз, что все вышеуказанные файлы действительно существуют и действительны.


3
2017-09-29 17:03



Также проверьте, что тире - тире. Редакторы текстовых редакторов Microsoft -- в –; это было не очень весело для устранения неполадок. - Shane Madden♦
yeap, так как вы на Ubuntu, просто откройте терминал и, например, используйте nano. Таким образом, вы будете уверены. - George Tasioulis
Привет, спасибо за ваш ответ. Я проверил все, и все хорошо. Я попытался проверить файл crt, но я получаю: sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE - williamsowen
Создает ли первая строка вашего файла domain.com.crt -----BEGIN CERTIFICATE----- и последняя строка заканчивается -----END CERTIFICATE-----? - George Tasioulis


Если кто-то другой сталкивается с этой проблемой, и ваши журналы ошибок apache говорят примерно так:

Init: невозможно прочитать сертификат сервера из файла /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt

Убедитесь, что вы не поменяли ваши файлы ключей и сертификатов в объявлениях в конфигурации apache. Я указал ключ на мой файл сертификата и сертификат на свой файл ключей. Этот пост помог мне разобраться с проблемой, но я хотел указать на это как на другую потенциальную проблему / решение.


1
2017-07-09 20:41





Моя проблема (с той же ошибкой при установке нового сервера с Apache 2.4) заключалась в том, что Apache (2.4) не смог прочитать двоичный файл .crt. Я импортировал его в свой личный магазин сертификатов (с mmc) и экспортировал его в качестве кодированного X.509 (.cer) в базе 64. Переименовал экспортированный файл с тем же именем (.crt) (используется в моем httpd-ssl.conf), и он снова работал! Тот же сертификат работал на моем старом сервере, возможно, Apache 2.4 более строгий, чем 2.2? Удачи.


0
2018-06-05 14:06