Как устранить ошибку «не удается загрузить сертификат» после удаления сертификата Let's Encrypt?

Не могли бы вы помочь мне с проблемой? Я установил сертификат с помощью certbot на облачный сервер с Ubuntu, но столкнулся с ошибкой при установке и затем удалил сертификат с помощью команды <code>certbot delete --cert-name домен</code>. После этого, когда я попытался выпустить новый сертификат с помощью команды <code>certbot</code>, возникла следующая ошибка: <pre><code>3186#3186: cannot load certificate "/etc/letsencrypt/live/домен/fullchain.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/letsencrypt/live/домен/fullchain.pem, r) error:10000080:BIO routines::no such file)</code></pre> и <pre><code>nginx: configuration file /etc/nginx/nginx.conf test failed</code></pre>. 

Из того, что я понял, я неправильно удалил сертификат — мне следовало сначала выполнить команду <pre><code>certbot revoke --cert-path /etc/letsencrypt/live/домен/cert.pem</code></pre>. Как мне исправить эту ошибку и повторно выпустить сертификат для того же домена?
  • 11 ноября 2024 г. 17:03
Ответы на вопрос 3
Ошибка, с которой вы столкнулись, связана с тем, что Certbot и Nginx не могут найти файлы сертификатов, так как вы их удалили. После удаления сертификата с помощью команды `certbot delete`, пути к сертификатам все еще могут быть прописаны в конфигурации Nginx, что и вызывает ошибку.

Чтобы исправить эту проблему и повторно выпустить сертификат для вашего домена, следуйте этим шагам:

1. **Проверьте конфигурацию Nginx**: Убедитесь, что в конфигурационных файлах Nginx больше нет ссылок на старые сертификаты. Откройте конфигурационные файлы для редактирования. Обычно конфигурационные файлы находятся в директории `/etc/nginx/sites-available` или `/etc/nginx/conf.d`. Например:

   ```bash
   sudo nano /etc/nginx/sites-available/default
   ```

   Найдите строки, которые выглядят примерно так:

   ```
   ssl_certificate /etc/letsencrypt/live/домен/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/домен/privkey.pem;
   ```

   Замените или закомментируйте их, чтобы предотвратить использование недействительных путей. Например, вы можете временно закомментировать их, добавив `#` в начале:

   ```
   # ssl_certificate /etc/letsencrypt/live/домен/fullchain.pem;
   # ssl_certificate_key /etc/letsencrypt/live/домен/privkey.pem;
   ```

2. **Проверьте конфигурацию Nginx**: Чтобы убедиться, что конфигурация Nginx корректна, выполните команду:

   ```bash
   sudo nginx -t
   ```

   Если всё в порядке, вы увидите сообщение, что тест прошёл успешно. Если нет, исправьте ошибки.

3. **Перезапустите Nginx**: После внесения изменений перезапустите Nginx:

   ```bash
   sudo systemctl restart nginx
   ```

4. **Выдайте новый сертификат с помощью Certbot**: Теперь, когда конфигурация Nginx исправлена, попробуйте снова выдать новый сертификат:

   ```bash
   sudo certbot --nginx -d ваш_домен
   ```

   Убедитесь, что вы правильно указываете доменное имя. Certbot автоматически обновит конфигурацию Nginx с правильными путями к новым сертификатам.

5. **Проверьте работу сайта**: После успешного выпуска сертификата проверьте свой сайт в браузере, чтобы убедиться, что HTTPS работает правильно.

Если возникнут дополнительные ошибки или проблемы, пожалуйста, дайте знать, и я постараюсь помочь вам дальше.
Отключите временно HTTPS-сервер, выпустите сертификат и верните обратно.
Это ошибка nginx, а не let's encrypt. Нужно удалить блок https в коныиге nginx.
Похожие вопросы