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