σφάλμα nginx cannot load certificate path/fullchain.pem εμφανίζεται όταν δοκιμάζουμε την υπηρεσία NGINX αφού διαγράψουμε πιστοποιημένο Let’s Encrypt δημιουργήθηκε με Certbot.
περιεχόμενο
Στο διακομιστή το σφάλμα εμφανίζεται σαν:
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
Φόντο eroare nginx
Σε ένα προηγούμενο άρθρο έχω δείξει πώς μπορείτε να διαγράψετε τα πεδία που έχουν φιλοξενηθεί στο διακομιστή, αλλά τα οποία δεν είναι πλέον ενεργά στο παρελθόν. Διαγράψτε τα πιστοποιητικά Certbot Old Domains (ας κρυπτογραφείτε το πιστοποιητικό).
Όταν διαγράφετε τα πιστοποιητικά SSL για ενεργά πεδία, τα οποία εξακολουθούν να φιλοξενούνται στον διακομιστή, με παραγγελία: sudo certbot delete, το πιστοποιητικό διαγράφεται αυτόματα, αλλά παραμένει ενεργό σε συνεδρίες μέχρι την επανεκκίνηση της υπηρεσίας nginx. Στην εντολή Ningin -T (δοκιμή υπηρεσίας) μπορείτε να εκπλήξετε τη δοκιμή για να αποτύχετε με το παραπάνω σφάλμα. Αλλά η λύση είναι πολύ απλή.

Διορθώστε το nginx: [egerg] δεν μπορεί να φορτώσει το πιστοποιητικό fullchain.pem
Κατά την εγκατάσταση ενός πιστοποιητικού SSL Let’s Encrypt Με τη διαμάχη, στο αρχείο διαμόρφωσης του NGINX για τον τομέα, υπάρχουν ορισμένες γραμμές που υποδεικνύουν την ύπαρξη του πιστοποιητικού. Όταν το πιστοποιητικό διαγραφεί, οι γραμμές παραμένουν στο Ningin Config και πρέπει να διαγραφούν με το χέρι. Εννοώ τις παρακάτω γραμμές:
.....
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
Αφού διαγράψετε αυτές τις γραμμές από το αρχείο Confg Ninx του πεδίου για το οποίο έχετε εξαλείψει το πιστοποιητικό SSL, εκτελέστε την παραγγελία nginx -t Για να ελέγξετε αν όλα είναι εντάξει.
[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]#
Τώρα μπορείτε να επανεκκινήσετε με ασφάλεια την υπηρεσία nginx.