помилка nginx cannot load certificate path/fullchain.pem з’являється, коли ми тестуємо службу NGINX після видалення сертифікатів Let’s Encrypt створений з Certbot.
На сервері помилка виглядає так:
nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/example.com/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/example.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
Купріни
Фонова помилка nginx
У попередній статті я показав, як можна видалити з Certbot домени, які раніше були розміщені на сервері, але наразі більше не активні. Видаліть старі домени Certbot certificates (Давайте зашифруємо сертифікат).
Коли ви видаляєте сертифікати SSL для активних доменів, які все ще розміщені на сервері, командою: sudo certbot delete
, сертифікат видаляється автоматично, але він залишається активним у сесіях до перезапуску служби nginx
. За допомогою команди nginx -t (тестування служби) ви можете бути здивовані тим, що тест завершується невдачею з наведеною вище помилкою. Однак рішення дуже просте.
Виправлено nginx: [emerg] не вдалося завантажити сертифікат fullchain.pem
Коли ви встановлюєте сертифікат SSL Let’s Encrypt по Certbot, у файл конфігурації nginx для домену додається кілька рядків, які вказують на наявність сертифіката. Після видалення сертифіката рядки залишаються в конфігурації nginx і їх потрібно видалити вручну. Тобто рядки нижче:
.....
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com;
listen 80;
return 404; # managed by Certbot
Після видалення цих рядків із конфігураційного файлу nginx домену, для якого ви видалили сертифікат SSL, виконайте команду nginx -t
щоб перевірити, чи все гаразд.
[root@server]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@server]#
Тепер ви можете безпечно перезапустити службу nginx.