interprism's blog

インタープリズム株式会社の開発者ブログです。

名前ベースのVirtualHostで運用しているサーバーのSSL証明書の有効期限をコマンドで取得する方法

hiranoです。

弊社ではそこそこの数のサイトを運営しているのですが、それぞれのSSL証明書の有効期限がバラバラに切れるため、突如

f:id:interprism:20170818183248p:plain

と表示されることがしばしばあります。

サーバー一覧と証明書の有効期限を管理しておいて、毎週見ればいいのですがもっと楽がしたいのでスクリプトを書いてデイリーで有効期限をチェックしようとした際にちょっとハマって解決したので記録です。

とりあえずググる

ありました。

qiita.com

やってみました。

$ 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証明書を取得してしまっているようでした。 ということで再度ググったところ、以下のページが見つかりました。

major.io

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

PAGE TOP