GNU/Linux >> Linux の 問題 >  >> Linux

PEM でエンコードされた証明書から SSL 証明書の有効期限を判断する方法は?

openssl で :

openssl x509 -enddate -noout -in file.pem

出力はフォームにあります:

notAfter=Nov  3 22:23:50 2014 GMT

上記の日付を解析することなく、証明書の有効期限が切れているかどうか、または特定の期間内に期限切れになるかどうかを簡単に確認する方法については、MikeW の回答も参照してください。


証明書の有効期限が切れている (または次の N 秒以内に期限切れになる) かどうかだけを知りたい場合は、-checkend <seconds> openssl x509 へのオプション 教えてくれます:

if openssl x509 -checkend 86400 -noout -in file.pem
then
  echo "Certificate is good for another day!"
else
  echo "Certificate has expired or will do so within 24 hours!"
  echo "(or is invalid/not found)"
fi

これにより、日付/時刻の比較を自分で行う必要がなくなります。

openssl 0 の終了コードを返します 上記の例で、証明書の有効期限が切れておらず、次の 86400 秒間有効でない場合は (ゼロ)。証明書の有効期限が切れている場合、または既に期限切れになっている場合、または無効なファイルや存在しないファイルなどのその他のエラーの場合、戻りコードは 1 です。 .

(もちろん、時刻/日付が正しく設定されていることを前提としています)

古いバージョンの openssl にはバグがあることに注意してください。つまり、checkend で指定された時間が が大きすぎる場合、常に 0 が返されます (https://github.com/openssl/openssl/issues/6180)。


これは、複数の証明書を有効期限の順にリストする bash コマンド ラインです。最近期限切れになったものを最初に示します。

for pem in /etc/ssl/certs/*.pem; do 
   printf '%s: %s\n' \
      "$(date --date="$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601)" \
      "$pem"
done | sort

出力例:

2015-12-16: /etc/ssl/certs/Staat_der_Nederlanden_Root_CA.pem
2016-03-22: /etc/ssl/certs/CA_Disig.pem
2016-08-14: /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_S.pem

Linux
  1. CSRキーを生成してCWPからSSL証明書をインストールする方法は?

  2. Active Directory からユーザー パスワードの有効期限を取得する方法は?

  3. 月の週数を決定する方法

  1. OpenSSLを使用してSSL証明書がSHA1またはSHA2であるかどうかを確認するにはどうすればよいですか?

  2. PleskでSSL証明書を適用する方法

  3. Ubuntu18.04で自己署名SSL証明書を作成する方法

  1. OpenSSLチュートリアル:SSL証明書、秘密鍵、およびCSRはどのように機能しますか?

  2. NGINXにSSL証明書をインストールする方法

  3. Plesk に SSL 証明書をインストールする方法