الخطأ 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: لا يمكن لـ [EMROUND] تحميل الشهادة 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.