Я использую сертификаты 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.