Перейти к содержимому
ecdsa.com
Ruby openssl (Net::HTTP, Faraday, RubyGems)Ruby

Сообщение об ошибке

state=error: certificate verify failed (certificate has expired)

Также выводится как

  • OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 peeraddr=127.0.0.1:8443 state=error: certificate verify failed (certificate has expired)

Полное сообщение: «SSL_connect returned=1 errno=0 peeraddr=<ip>:<port> state=error: certificate verify failed (certificate has expired)». Для сертификатов, срок действия которых ещё не начался, выводится «(certificate is not yet valid)».

Ruby openssl (Net::HTTP, Faraday, RubyGems) — OpenSSL::SSL::SSLError from SSL_connect

Что это означает

OpenSSL нашёл в цепочке сертификат, срок действия которого закончился раньше текущего времени на машине, где работает Ruby. Чаще всего сертификат сервера не продлили или после продления новый сертификат не развернули; на старых системах устаревший пакет сертификатов CA может заставить OpenSSL построить путь через корневой сертификат с истёкшим сроком действия.

Почему это происходит

Как исправить

  1. 1.

    Проверьте, до какой даты действует отдаваемый сертификат

    Если эта дата уже прошла, продлите сертификат; если с ней всё в порядке, проверьте пакет сертификатов и часы клиента.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -enddate
  2. 2.

    Обновите пакет сертификатов CA на клиенте

    Обновление пакета ca-certificates устраняет ошибку у клиентов, которые строят путь через выведенные из обращения корневые сертификаты.

    bash
    # Old images: refresh the CA bundle Ruby's OpenSSL uses
    apt-get update && apt-get install --only-upgrade -y ca-certificates
    ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
  3. 3.

    Продлите сертификат и перезагрузите конфигурацию сервера

    Продлите сертификат и перезагрузите конфигурацию узла, который терминирует TLS; затем проверьте результат со стороны сети.

    bash
    sudo certbot renew && sudo systemctl reload nginx

Связанные ошибки

Открыть всю базу ошибок подписей