nginx cannot load certificate fullchain.pem – Certbot виправляти

помилка 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, сертифікат видаляється автоматично, але він залишається активним у сеансах до restartзона обслуговування nginx. За допомогою команди nginx -t (тестування служби) ви можете бути здивовані тим, що тест завершується невдачею з наведеною вище помилкою. Однак рішення дуже просте.

nginx cannot load certificate
nginx cannot load certificate

Виправлено 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 домену, для якого ви видалили сертифікат 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]# 

Тепер ви можете restartпослуга безпечна nginx.

Stealth: Захоплюючись технологіями, я люблю тестувати та писати підручники про операційні системи macOS, Linux, Windows, про WordPress, WooCommerce і налаштувати веб-сервери LEMP (Linux, NGINX, MySQL і PHP). Я пишу далі StealthSettings.com з 2006 року, а через кілька років я почав писати на iHowTo.Tips підручники та новини про пристрої в екосистемі Apple: iPhone, iPad, Apple Годинник, HomePod, iMac, MacBook, AirPods та аксесуари.
Новий в