HTTPS в Apache. Ошибка: AH02241: Init: Unable to read server certificate from file … certificate.crt

Автор: Андрей Торженов

В процессе настройки бесплатного SSL от StartSSL для ownCloud на Apache/2.4.6 (CentOS 7), столкнулся с ошибкой которая мешала запустить Apache.
logo_log_ah02241

Фрагмент лог файла Apache:

...
[Sat Oct 10 20:05:54.434651 2015] [ssl:emerg] [pid 25398] AH02241: Init: Unable to read server certificate from file /etc/ssl/certs/test.crt
[Sat Oct 10 20:05:54.434711 2015] [ssl:emerg] [pid 25398] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sat Oct 10 20:05:54.434739 2015] [ssl:emerg] [pid 25398] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=X509)
[Sat Oct 10 20:05:54.434752 2015] [ssl:emerg] [pid 25398] AH02312: Fatal error initialising mod_ssl, exiting.
...

Обратите внимание на: «AH02241: Init: Unable to read server certificate from file /etc/ssl/certs/test.crt»

В процессе траблшутинга и поиска информации по данной ошибке, стало понятно, что проблема в содержимом (формате) файла сертификата, но когда я просматривал файл сертификата с помощью mc (Midnight Commander), то не находил ни каких ошибок. Содержимое файла, было абсолютно таким же, что и сгенерил StartSSL.

Содержимое файла сертификатов. Просмотр (F3) в MC

Содержимое файла сертификатов. Просмотр (F3) в MC

Потупил я ещё некоторые время…

Далее, я решил с помощью mc не просмотреть (F3), а отредактировать (F4) файл сертификата (зачем я это делал, уже не помню). И что я вижу:

Редактирование (F4) сертификата в MC

Редактирование (F4) сертификата в MC

Тут то всё стало ясно… ^M это дополнительные символы перевода строки в Windows. При просмотре в mc их не было видно, а при редактировании они появились.

Как же это произошло?

А произошло это очень просто. StartSSL генерит сертификат и приватный ключи, а далее нам необходимо используя Copy/Past перенести их в файлы.

Просмотр сертификата в Notepad++. Формат файла Dos/Windows

Просмотр сертификата в Notepad++. Формат файла Dos/Windows

Для Past я использовал Notepad++ , а у него по умолчанию используется формат «Dos/Windows». Если в Notepad++ включить «Отображение всех символов» (1) то мы увидим лишние символы «CR» (2).

Нужно сохранить файл в формате «Unix». Для этого правой кнопкой мыши нажимаем на названии текущего формата «Dos/Windows» (3) и выбираем «Unix».

Просмотр сертификата в Notepad++. Формат файла Dos/Windows

Просмотр сертификата в Notepad++. Формат файла Dos/Windows

Лишние символы исчезли. Сохраняем файл сертификата и проделываем такую же процедуру и с файлом ключа.

Просмотр сертификата в Notepad++. Формат файла Unix

Просмотр сертификата в Notepad++. Формат файла Unix

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

Конфиг SSL виртуального хоста в Apache

И напоследок выложу рабочий конфиг SSL/HTTPS виртуального хоста Apache.

<VirtualHost *:443>
    ServerName          your.domain.local:443
    ServerAdmin         you@domain.local
    DocumentRoot        /var/www/html/owncloud
    ErrorLog            /var/log/httpd/owncloud_error_log

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

SSLEngine 		on
SSLProtocol 	all -SSLv2
SSLCipherSuite 	ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

SSLCertificateFile 		/etc/ssl/certs/ssl.crt
SSLCertificateKeyFile 	/etc/ssl/certs/ssl.key
SSLCertificateChainFile	/etc/ssl/certs/sub.class1.server.ca.pem

CustomLog	/var/log/httpd/owncloud_ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

Ссылки

 

The following two tabs change content below.
В профессиональной сфере занимаюсь всем, что связанно с IT. Основная специализация - VoIP и сети передачи данных. Стараюсь не заниматься Windows серверами (но иногда приходится) и 1С.

Добавить комментарий