hiranoです。
弊社ではそこそこの数のサイトを運営しているのですが、それぞれのSSL証明書の有効期限がバラバラに切れるため、突如
と表示されることがしばしばあります。
サーバー一覧と証明書の有効期限を管理しておいて、毎週見ればいいのですがもっと楽がしたいのでスクリプトを書いてデイリーで有効期限をチェックしようとした際にちょっとハマって解決したので記録です。
とりあえずググる
ありました。
やってみました。
$ openssl s_client -connect subdomain.domain:443 < /dev/null 2> /dev/null | openssl x509 -text | grep "Not After" Not After : Nov 7 01:17:00 2017 GMT
が、ブラウザでアクセスすると有効期限切れと出るのに、こちらだと有効期限内だと出てしまいます。(今日は2017/08/18)
サーバー構成と再度ググる
弊社は複数ドメインを名前ベースのVirtualHostで運用しているのですが、どうもIPアドレスでSSL証明書を取得してしまっているようでした。 ということで再度ググったところ、以下のページが見つかりました。
SNI使ってる場合は -servername subdomain.domain
を使いましょうということです。
結論
ということで以下のコマンドでとれます。
openssl s_client -connect subdomain.domain:443 -servername subdomain.domain < /dev/null 2> /dev/null | openssl x509 -text | grep "Not After" Not After : Aug 17 06:46:00 2017 GMT