監視周りの設定をやっていた際、対象URLの証明書日数が迫ってきたらアラート出すように設定をしていたのだけど、日数ならシェル芸で取れるなと思ったので備忘として残しておく。 以下のように、opensslコマンドでサイトにアクセスして直接証明書を取得し、そこから期日を取ってきて日付計算をすればいい。

echo|openssl s_client -connect ドメイン名:443 2>/dev/null|openssl x509 -noout -enddate|cut -d= -f 2-|xargs -I@ bash -c 'echo $((($(date +%s -d "@")-$(date +%s))/(60 * 60 * 24)))'
blacknon@BS-PUB-DEVELOP:~$ echo|openssl s_client -connect orebibou.com:443 2>/dev/null|openssl x509 -noout -enddate
notAfter=Jan 17 23:59:59 2019 GMT
blacknon@BS-PUB-DEVELOP:~$ echo|openssl s_client -connect orebibou.com:443 2>/dev/null|openssl x509 -noout -enddate|cut -d= -f 2-
Jan 17 23:59:59 2019 GMT
blacknon@BS-PUB-DEVELOP:~$ echo|openssl s_client -connect orebibou.com:443 2>/dev/null|openssl x509 -noout -enddate|cut -d= -f 2-|xargs -I@ bash -c 'echo $((($(date +%s -d "@")-$(date +%s))/(60 * 60 * 24)))'
425

とりあえず、このブログの証明書はまだしばらく持ちそうだ(´・ω・`)。 ドメインについては、種類(.comとか.jpとか)で出力形式が全然違うので、汎用的に取得するのは難しそう。