de 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.
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
Inhoud
Achtergrond nginx-fout
In een vorig artikel heb ik laten zien hoe je kunt verwijderen uit Certbot de domeinen die in het verleden op de server werden gehost maar momenteel niet meer actief zijn. Oude domeinen verwijderen Certbot certificates (Laten we het certificaat versleutelen).
Wanneer u certificaten verwijdert SSL voor actieve domeinen, die nog steeds op de server worden gehost, op commando: sudo certbot delete
, wordt het certificaat automatisch verwijderd, maar blijft het actief in sessies totdat de service opnieuw wordt gestart nginx
. Met de opdracht nginx -t (testen van de service) zult u misschien verbaasd zijn dat de test mislukt met de bovenstaande fout. De oplossing is echter heel eenvoudig.
Fixed nginx: [emerg] kan certificaat fullchain.pem niet laden
Wanneer u een certificaat installeert SSL Let’s Encrypt door Certbot, in het configuratiebestand van nginx voor het domein worden enkele regels toegevoegd die het bestaan van het certificaat aangeven. Wanneer het certificaat wordt verwijderd, blijven de regels in 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
Na het verwijderen van deze regels uit het nginx confg-bestand van het domein waarvoor u het certificaat hebt verwijderd SSL, voer 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 opstarten nginx.