Грешка 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
Фон eroare nginx
В предишна статия показах как можете да изтриете от Certbot домейните, които са били хоствани на сървъра в миналото, но които в момента вече не са активни. Изтриване на стари домейни certbot сертификати (нека криптира сертификат).
При изтриване на 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 confg на домейна, за който сте премахнали 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.