Назад | Перейти на главную страницу

Ошибка Let's Encrypt SSL Certificate File Not Found, но все еще работает

Я использую сертификаты SSL от Давайте зашифровать. Я установил их на моем компьютере с Ubuntu, на котором запущен Apache. Настройка работает нормально, я могу запустить веб-сайт, увидеть зеленый замок и даже получить A + на SSL Labs.

Проблема в том, что когда я apachectl configtest сервер вернет ошибку "файл не найден":

SSLCertificateFile: file '/etc/letsencrypt/live/www.example.com/fullchain.pem' not exist or is empty.

Но sudo service apache2 restart работает нормально.

У меня есть этот вопрос Сообщество Let's Encrypt но проблема еще не решена.

sudo cat /etc/letsencrypt/live/www.example.com/fullchain.pem работает, возвращает данные действующего сертификата.

sudo x509 -text -noout -in /etc/letsencrypt/live/www.example.com/fullchain.pem

не работает и возвращает ошибку ниже:

Error opening Certificate /etc/letsencrypt/live/www.example.com/fullchain.pem
139774254929568:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/letsencrypt/live/www.example.com/fullchain.pem.','r')
139774254929568:error:2007402:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
ubable to load certificate

Любые идеи о том, почему я получаю ошибки apachectl configtest и openssl?

Спасибо, парни!

В моем случае проблема не в файлах и разрешениях. Я пытался перезапустить сервер с помощью apachectl restart или протестируйте конфиг (apachectl -t или apachectl configtest). Пользователь, выполняющий команду (я), просто не имел необходимых разрешений для доступа к сертификатам. Мне просто нужно было добавить к командам префикс sudo запустить их как root! Ошибок больше нет, тест конфигурации возвращает «Синтаксис ОК», и я могу перезапустить сервер. (Хорошо, я немного смущен, что мне понадобилось так много времени, чтобы понять это ...)

После нескольких бессонных ночей мне наконец удалось заставить его работать. (заявление о чрезмерном убийстве) Все мы знаем, что это были разрешения, но где именно было что проверить.

Я продолжал работать с / ect / letsencrypt / live а также каталоги и файлы под ним. Я все время менял разрешения с оригинала на 0755 и 0777. Что я не сразу заметил, так это то, что / и т. д. / letsencrypt / жить была ссылка создана из / etc / letsencrypt / archive и у него был 0700 разрешение. Вот почему он не смог прочитать файл. После изменения разрешения / и т.д. / letsencrypt / архив к 0755, apachectl configtest уже ответил Syntax OK.

Хотя исходная проблема была решена, я верну ее к Давайте зашифровать потому что это была автоматическая установка сертификатов. Что-то подобное не должно происходить в «авто». Но моя установка может иметь какое-то отношение к проблеме с разрешениями, поскольку я установил ее с использованием пользователя без полномочий root (но я сделал sudo).

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

Разрешения для файлов сертификатов лучше оставить очень жесткими. Чтобы разрешить соответствующим процессам доступ к файлам сертификатов: запустите apache с помощью следующих команд.

sudo service httpd start

В качестве альтернативы изящно перезапустите, используя эту команду:

sudo service httpd graceful

Как первоначально прокомментировал Ян Терле, изменение прав доступа к "живому" каталогу теперь решает проблему:

sudo chmod -R 0755 /etc/letsencrypt/live

Примечание: я наблюдал ту же ошибку, что и OP.

Это было подтверждено:
Ubuntu 16.04.2 LTS
Apache / 2.4.18 (Ubuntu)

Соглашаясь с ответ timeSmith что разрешения для этих файлов и папок намеренно жесткие и должны быть оставлены как 0700.

Вам нужно бежать service httpd или apachectl команды как sudo чтобы эти процессы имели права root и получили доступ на чтение к папкам и файлам сертификатов letsencrypt.