השגיאה 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
קופרינים
שגיאת nginx ברקע
במאמר קודם הראיתי איך אפשר למחוק מ Certbot הדומיינים שהתארחו בשרת בעבר אך אינם פעילים כעת. מחק דומיינים ישנים Certbot certificates (בואו נצפין אישור).
כאשר אתה מוחק אישורים SSL עבור דומיינים פעילים, שעדיין מתארחים בשרת, לפי פקודה: sudo certbot delete
, האישור נמחק אוטומטית, אך הוא נשאר פעיל בהפעלות עד שהשירות יופעל מחדש nginx
. עם הפקודה nginx -t (בדיקת השירות) אתה עשוי להיות מופתע שהבדיקה נכשלת עם השגיאה שלעיל. עם זאת, הפתרון הוא פשוט מאוד.
nginx תוקן: [emerg] לא יכול לטעון את האישור fullchain.pem
כאשר אתה מתקין אישור SSL Let’s Encrypt ידי Certbot, בקובץ התצורה של nginx עבור הדומיין, מתווספות כמה שורות המציינות את קיומו של האישור. כאשר האישור נמחק, השורות נשארות בתצורת nginx ויש למחוק אותן באופן ידני. כלומר, השורות למטה:
.....
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
לאחר מחיקת שורות אלו מקובץ ה-nginx confg של הדומיין שעבורו הסרת את האישור 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.