Webサーバで現在絶賛使用中のSSL証明書の期限をチェックしたくなった場合以下のコマンドを実行すると良いらしいです。
$ echo | openssl s_client -connect [site:port] 2>/dev/null | openssl x509 -noout -dates
具体的には以下のような結果が返ってきます。
$ echo | openssl s_client -connect qiita.com:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Mar 15 03:55:03 2015 GMT
notAfter=May 16 01:59:04 2017 GMT
-
notBefore
には証明書の有効期間の開始日 -
notAfter
には証明書の有効期間の終了日
がそれぞれ表示されます。
また、シェルスクリプトで証明書の失効するx日前であるかどうかをチェックしたいという場合には以下のコマンドが役に立ちます。
$ echo | openssl s_client -connect [domain:port] 2>/dev/null | openssl x509 -checkend [seconds] -noout
上記のコマンドの終了コードをチェックすることによって結果を知ることができます。
-
0
が返ってきた場合は [seconds] 秒以内には証明書は失効しません -
1
が返ってきた場合は [seconds] 秒以内に証明書が失効します
例えば失効の 30日 前になったときに警告を出したいといったときにはワンライナーで以下のように記述をすることができます。
echo | openssl s_client -connect qiita.com:443 2>/dev/null | openssl x509 -checkend $((30 * 24 * 60 * 60)) -noout || echo "この証明書は30日以内に失効します" >&2
以上、Qiita初投稿でした。