Erreur nginx cannot load certificate path/fullchain.pem apparaît lorsque nous testons le service NGINX après la suppression des certificats Let’s Encrypt généré avec Certbot.
Dans le serveur, l'erreur apparaît comme ceci :
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
Sommaire
Erreur nginx en arrière-plan
Dans un article précédent, j'ai montré comment vous pouvez supprimer de Certbot les domaines qui étaient hébergés sur le serveur dans le passé mais qui ne sont plus actifs actuellement. Supprimer les anciens domaines Certbot certificates (Chiffrons le certificat).
Lorsque vous supprimez des certificats SSL pour les domaines actifs, qui sont toujours hébergés sur le serveur, par commande : sudo certbot delete
, le certificat est supprimé automatiquement, mais il reste actif dans les sessions jusqu'au redémarrage du service nginx
. Avec la commande nginx -t (test du service), vous pourriez être surpris que le test échoue avec l'erreur ci-dessus. Cependant, la solution est très simple.
Correction de nginx : [emerg] ne peut pas charger le certificat fullchain.pem
Lorsque vous installez un certificat SSL Let’s Encrypt par Certbot, dans le fichier de configuration de nginx pour le domaine, quelques lignes sont ajoutées indiquant l'existence du certificat. Lorsque le certificat est supprimé, les lignes restent dans la configuration nginx et doivent être supprimées manuellement. C'est-à-dire les lignes ci-dessous :
.....
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
Après avoir supprimé ces lignes du fichier de configuration nginx du domaine pour lequel vous avez supprimé le certificat SSL, exécutez la commande nginx -t
pour vérifier si tout est 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]#
Vous pouvez maintenant redémarrer le service en toute sécurité nginx.