Перейти к содержимому
ecdsa.com
rustls 0.23 (via reqwest, ureq, hyper-rustls)Rust

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

invalid peer certificate: certificate expired: verification time

Полная форма: «invalid peer certificate: certificate expired: verification time <unix> (UNIX), but certificate is not valid after <unix> (<n> seconds ago)». Более ранние релизы rustls выводили только имя варианта («invalid peer certificate: Expired»). Для сертификатов, срок действия которых ещё не начался, есть отдельный вариант «not valid yet».

rustls 0.23 (via reqwest, ureq, hyper-rustls) — CertificateError::ExpiredContext

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

rustls проверил цепочку, но на момент проверки у одного из сертификатов в ней уже прошла дата notAfter. rustls 0.23 указывает оба момента в виде меток времени Unix и сообщает, сколько секунд назад истёк срок действия сертификата, так что сразу видно, что неверно: сертификат или часы.

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

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

  1. 1.

    Преобразуйте метки времени

    date -u -d @<seconds> переводит оба значения в понятное время UTC.

    bash
    # The message gives both instants as Unix seconds
    date -u -d @1743465600      # certificate's notAfter
    date -u                     # this machine's time
  2. 2.

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

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

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -noout -enddate
    sudo certbot renew && sudo systemctl reload nginx

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

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