本文へスキップ
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

関連するエラー

署名エラーデータベースをすべて見る