virhe nginx cannot load certificate path/fullchain.pem tulee näkyviin, kun testaamme NGINX-palvelua varmenteiden poistamisen jälkeen Let’s Encrypt luotu kanssa Certbot.
Palvelimessa virhe näyttää tältä:
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
Sisältö
Taustalla oleva nginx-virhe
Edellisessä artikkelissa näytin, kuinka voit poistaa Certbot verkkotunnukset, joita isännöi palvelimella aiemmin, mutta jotka eivät ole enää aktiivisia. Poista vanhat verkkotunnukset Certbot certificates (Salataan varmenne).
Kun poistat varmenteita SSL aktiivisille verkkotunnuksille, joita edelleen isännöidään palvelimella, komennolla: sudo certbot delete
, varmenne poistetaan automaattisesti, mutta se pysyy aktiivisena istunnoissa, kunnes palvelu käynnistetään uudelleen nginx
. Nginx -t -komennolla (palvelun testaaminen) saatat yllättyä, että testi epäonnistuu yllä olevan virheen vuoksi. Ratkaisu on kuitenkin hyvin yksinkertainen.
Korjattu nginx: [emerg] ei voi ladata varmennetta fullchain.pem
Kun asennat varmenteen SSL Let’s Encrypt mukaan Certbot, verkkotunnuksen nginx-määritystiedostoon on lisätty muutama rivi, jotka osoittavat varmenteen olemassaolon. Kun varmenne poistetaan, rivit pysyvät nginx-konfiguraatiossa ja ne on poistettava manuaalisesti. Eli alla olevat rivit:
.....
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
Kun olet poistanut nämä rivit sen toimialueen nginx-confg-tiedostosta, jonka varmenteen poistit SSL, suorita komento nginx -t
tarkistaaksesi onko kaikki kunnossa.
[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]#
Nyt voit turvallisesti käynnistää palvelun uudelleen nginx.