fout nginx cannot load certificate path/fullchain.pem verschijnt wanneer we de NGINX-service testen na het verwijderen van certificaten Let’s Encrypt gegenereerd met Certbot.
inhoud
Op de server verschijnt de fout als volgt:
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
Achtergrond eroare nginx
In een vorig artikel liet ik zien hoe je uit Certbot de domeinen kunt verwijderen die in het verleden op de server werden gehost maar die momenteel niet meer actief zijn. Old Domains CertBot Certificaten verwijderen (laten we certificaat coderen).
Bij het verwijderen van SSL-certificaten voor actieve domeinen, die nog steeds op de server worden gehost, via een opdracht: sudo certbot delete, wordt het certificaat automatisch verwijderd, maar blijft het actief in sessies totdat de service opnieuw wordt gestart nginx. Met het commando nginx -t (de service testen) zal het je misschien verbazen dat de test mislukt met de bovenstaande fout. De oplossing is echter heel eenvoudig.

Fix nginx: [emerg] kan certificaat fullchain.pem niet laden
Wanneer u een SSL-certificaat installeert Let’s Encrypt via Certbot worden in het configuratiebestand van nginx voor het domein een paar regels toegevoegd die het bestaan van het certificaat aangeven. Wanneer het certificaat wordt verwijderd, blijven de regels in de nginx-configuratie en moeten ze handmatig worden verwijderd. Dat wil zeggen, de onderstaande regels:
.....
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
Nadat u deze regels heeft verwijderd uit het nginx-configuratiebestand van het domein waarvoor u het SSL-certificaat hebt verwijderd, voert u de opdracht uit nginx -t om te controleren of alles in orde is.
[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 kunt u de service veilig opnieuw starten nginx.