felet nginx cannot load certificate path/fullchain.pem visas när vi testar NGINX-tjänsten efter att ha tagit bort certifikat Let’s Encrypt genereras med Certbot.
På servern ser felet ut så här:
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
Koppprins
Bakgrunds nginx-fel
I en tidigare artikel visade jag hur du kan ta bort från Certbot de domäner som tidigare fanns på servern men som för närvarande inte längre är aktiva. Ta bort gamla domäner Certbot certificates (Låt oss kryptera certifikat).
När du tar bort certifikat SSL för aktiva domäner, som fortfarande finns på servern, genom kommando: sudo certbot delete
, certifikatet raderas automatiskt, men det förblir aktivt i sessioner tills tjänsten startas om nginx
. Med kommandot nginx -t (testa tjänsten) kan du bli förvånad över att testet misslyckas med ovanstående fel. Lösningen är dock väldigt enkel.
Fast nginx: [emerg] kan inte ladda certifikatet fullchain.pem
När du installerar ett certifikat SSL Let’s Encrypt av Certbot, i konfigurationsfilen för nginx för domänen, läggs några rader till som indikerar att certifikatet finns. När certifikatet raderas förblir raderna i nginx-konfigurationen och måste tas bort manuellt. Det vill säga raderna nedan:
.....
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
Efter att ha tagit bort dessa rader från nginx confg-filen för domänen som du tog bort certifikatet för SSL, kör kommandot nginx -t
för att kolla om allt är ok.
[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]#
Nu kan du säkert starta om tjänsten nginx.