Назад | Перейти на главную страницу

Ошибка Certbot: ssl.SSLError: [X509] ни сертификат, ни CRL не найдены (_ssl.c: 3732)

Это копия недавнего Тема форума сообщества Let's Encrypt что помогло мне решить проблему. Я добавляю это здесь, поскольку это потенциально может повлиять на большее количество пользователей.


У меня есть сервер с тремя веб-сайтами, использующими Let's Encrypt. Эти сертификаты обновляются без проблем. Теперь я хотел бы создать сертификат для четвертого нового веб-сайта. Вот что я получаю:

certbot --apache certonly -w /path/to/docroot/ -d subdomain.example.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
An unexpected error occurred:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 313, in ssl_wrap_socket
    context.load_verify_locations(ca_certs, ca_cert_dir)
ssl.SSLError: [X509] no certificate or crl found (_ssl.c:3732)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 346, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 852, in _validate_conn
    conn.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 326, in connect
    ssl_context=context)
  File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 315, in ssl_wrap_socket
    raise SSLError(e)
urllib3.exceptions.SSLError: [X509] no certificate or crl found (_ssl.c:3732)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by SSLError(SSLError(185090184, '[X509] no certificate or crl found (_ssl.c:3732)'),))

During handling of the above exception, another exception occurred:

requests.exceptions.SSLError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by SSLError(SSLError(185090184, '[X509] no certificate or crl found (_ssl.c:3732)'),))
Please see the logfiles in /var/log/letsencrypt for more details.

Это на Ubuntu 18.04. Я не уверен, что происходит.

Для смягчения последствий вам в основном нужно деинсталлировать «ca-сертификаты», а также «certbot» и выполнить для них новую переустановку.

Ситуация:

certbot --apache certonly -w /path/to/docroot/ -d subdomain.example.com

-> не удается :(

Тестирование:

curl -I https://www.gnu.org/

-> не удается :(

Шаг первый:

sudo apt remove ca-certificates

sudo apt install ca-certificates

Тестирование:

curl -I https://www.gnu.org/

-> работает :)

Второй шаг решения (пользователи Apache):

sudo apt install certbot python3-certbot-apache

Второй шаг решения (пользователи Nginx):

sudo apt install certbot python3-certbot-nginx

Результат:

certbot --apache certonly -w /path/to/docroot/ -d subdomain.example.com

-> работает :)

Спасибо за огромную помощь сообществу Let's Encrypt! Они замечательные!