Я настраивал SSL для своего домена сегодня и столкнулся с другой проблемой - я надеялся, что кто-то сможет пролить свет на это ..
Я продолжаю получать следующие сообщения об ошибках:
[ошибка] 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 имеет теги Begin и End и был скопирован именно из письма с подтверждением, которое я получил, очень расстраивает!
Ура!
Редактировать >> При попытке проверить .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
Редактировать >> (кстати, за помощь)
>> grep '^ -----' domain.com.crt ----- НАЧАТЬ СЕРТИФИКАТ ----- ----- КОНЕЦ СЕРТИФИКАТА -----
Просто по электронной почте компании, предоставляющей сертификат, они ответили>
Я проверил предоставленный вами файл CSR и могу убедиться, что он был сгенерирован правильно. Ошибка, с которой вы сейчас столкнулись, вызвана тем, что вы используете неверную командную строку для установки CSR. Вам нужно будет изменить этот domain.com.crt из командной строки, указав соответствующее имя вашего домена.
- в настоящее время crt настроен на mysite.com.crt - я использовал domain.com.crt в качестве примера
источник
grep '^-----' domain.com.crt
?Ответы:
Возможно ли, что строки заканчиваются ^ M? Это потенциальная проблема при перемещении файлов из Windows в системы UNIX. Один простой способ проверить это - использовать
vi
в режиме «покажи мне двоичный файл» сvi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
.Если каждая строка заканчивается контрольной-M, как это
у вас есть файл в формате строки с Windows, и Apache его не любит.
Ваши варианты включают в себя перемещение файла снова, больше заботы; или используя
dos2unix
команду, чтобы удалить их; Вы также можете удалить их внутри vi, если вы осторожны.Редактирование : спасибо @ dave_thompson_085, который указывает, что этот ответ больше не применяется в 2019 году. То есть Apache / OpenSSL теперь допускают строки с ^ M-завершенными, поэтому они не вызывают проблем. Тем не менее, другие ошибки форматирования, несколько различных примеров которых появляются в комментариях, могут все еще вызывать проблемы; Тщательно проверьте их, если сертификат был перемещен по системам.
источник
-----BE
... Спасибо за вдохновение для двойной проверки!Для тех, кто попадает на эту страницу с подобной ошибкой при попытке прочитать запрос на подпись сертификата (CSR) (обратите внимание, что OP читает сертификат): обязательно используйте правильную команду OpenSSL.
x509
для сертификатов иreq
для CSR:против
источник
Просто ходил кругами по этому вопросу, и оказалось, что у меня были сертификаты по неправильному пути - например,
вместо того:
Что-то, чтобы проверить, если вы получаете эту ошибку.
источник
Я подозреваю, что у вас есть проблемы с форматом сертификата.
Запустите обе следующие команды и выдайте нам результат:
источник
В моем случае я обнаружил, что в моем сертификате были разные символы "-". Должно быть, это была проблема копирования / вставки от администратора, который поместил сертификат на сервер, с заменой текстового редактора - специальным символом юникода.
Для диагностики потребовались часы, и в конце я только догадался об этом, отредактировал сертификат в vi, удалил существующие символы "-" и перепечатал их.
Надеюсь, это кому-нибудь поможет.
источник
В моем случае я столкнулся с ошибками OP, потому что тот, кто создал для меня файл .crt, сначала создал файл в формате .PEM и назвал его .crt.
Я обнаружил это, наткнувшись на следующее полезное руководство: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how -в-новообращенный-их
все, что мне нужно было сделать, это переименовать мой .crt в .pem, и все готово! В руководстве указывалось, что ошибки в вопросе OP подразумевают, что входной файл уже отформатирован в PEM, поэтому попытка преобразовать его в .pem из формата DER не может быть выполнена, и на самом деле в этом нет необходимости.
источник
Убедитесь, что в вашем файле нет конечных или начальных пробелов в файле сертификата. Тщательно убедитесь, что в вашем файле сертификата нет пробелов или пробелов, выделив весь текст и ища пробелы в текстовом редакторе.
Также проверьте, действительно ли все настроенные файлы существуют и являются правильными.
Например: в другом сообщении вы говорите, что ваш файл .key называется my domain.com.crt, а в конфигурации vhost у вас есть domain.com.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
-----BEGIN CERTIFICATE-----
последней строки и заканчивается на-----END CERTIFICATE-----
?Если кто-то еще столкнется с этой проблемой и ваши журналы ошибок apache скажут что-то вроде:
Init: невозможно прочитать сертификат сервера из файла /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
Убедитесь, что вы не поменяли местами файлы ключей и сертификатов в объявлениях в конфигурации Apache. Я указал ключ к моему файлу сертификата и сертификат к моему файлу ключа. Этот пост помог мне разобраться в проблеме, но я хотел указать на нее как на другую потенциальную проблему / решение.
источник
Моя проблема (с той же ошибкой при установке нового сервера с Apache 2.4) заключалась в том, что Apache (2.4) не мог прочитать двоичный файл .crt. Я импортировал его в свое личное хранилище сертификатов (с mmc) и экспортировал как X.509 (.cer) в кодировке base-64. Переименовал экспортированный файл в то же имя (.crt) (используется в моем httpd-ssl.conf), и он снова заработал! Тот же сертификат работал на моем старом сервере, может быть, Apache 2.4 более строгий, чем 2.2? Удачи.
источник
В моем случае это связано с наличием спецификации в файле. Можно было бы раздеть это так:
Не уверен, что он всегда занимает 3 байта, поэтому лучший способ должен быть:
источник
Я получил ту же ошибку, потому что я переключил .key с именами .crt
источник
У меня была похожая проблема, когда я случайно использовал предоставленный клиентом сертификат IIS типа p7b в конфигурации apache. Преобразование сертификата в формат x509 исправило ошибку. Оба типа выглядят одинаково на поверхности, но, очевидно, отличаются внутри.
источник
У меня была эта проблема, потому что мне отправили содержимое файла .p7b в стиле IIS, вставленного в электронное письмо. Он имеет теги "----- BEGIN CERTIFICATE -----" и "----- END CERTIFICATE -----", как и .pem, а в контенте используется похожая кодировка base64. Я преобразовал его в файл * .pem примерно так:
После этого Apache 2.2 был счастлив.
источник
У меня недавно была эта проблема с использованием Lets Encrypt (letsencrypt) в Windows. Сертификат вернулся в кодировке UTF-16LE. Преобразование его в UTF-8 (с использованием dos2unix) решило проблему.
источник
В моем случае были просто пустые строки. Когда я вставлял файл crt из ntepad или notepad ++ в nano, всегда получалось что-то вроде
удаление пустых пространств и путиг все в одну линию решили проблему, например:
источник