Help us understand the problem. What is going on with this article?

SSL証明書の有効期限チェック

More than 1 year has passed since last update.

BRIGHT VIE Advent Calendar 2017 - Qiita の7日目です!

アドベントカレンダーも1週間目!
今のところ走り続けれていますが、執筆が続いているためそろそろバテてきており...
今日は軽めな感じで。。。

はじめに

弊社でもパブリックな証明書やプライベート証明書など様々なタイプのSSL証明書を利用しているのですが、
組織としてきちんと動き出す以前は、SSLの証明書チェックが無かったり、
運用中にもかかわらず有効期限切らせてしまったりといったことが結構起きている状況でした;;

最近では、Let's Encryptなども利用しており、cronで更新処理を組み込んだりしてりおけば安心ですが、
念のため自動更新の場合でも正常に更新がされているのか、
手動の場合には更新し忘れがないかをチェックしたいといった場合はあるかと思います。

簡易的なチェック方法

弊社で利用している簡易的な有効期限のチェックはJenkinsさんが頑張ってくれています。
(実行環境は、 Amazon Linux AMIで、サーバのタイムゾーンがJST)

# 対象のドメインの有効期限を取得(GMT)
## (2018/03/11 EXPIREとなっていたのをEXPIREDに修正)
EXPIRED=`openssl s_client -connect 対象ドメイン:443 < /dev/null 2> /dev/null | openssl x509 -text | grep "Not After" | awk -F ' : ' '{print $2}'`

# 有効期限をUnixTimestamp形式で取得する(GMT)
EXPIRED_UNIXTIME=`date '+%s' -d "\`echo $EXPIRED\`"`

# 取得した有効期限はGMTであるため、日本標準時間のJSTに変更する
EXPIRED_UNIXTIME=`expr $EXPIRED_UNIXTIME - 32400`

# あと何日かを取得するために現在の時間をUnixTimestamp形式で取得する
NOW_UNIXTIME=`date "+%s"`

# 有効期限から今の時間を引くことで、残り時間をUnixTimestmap形式で計算する
DIFF_SECOND=`expr $EXPIRED_UNIXTIME - $NOW_UNIXTIME`

# 1日は、60秒*60分*24時間=86400秒
ONE_DAY_SECOND=86400

# 残り日数を取得する
DAYS=`expr $DIFF_SECOND / $ONE_DAY_SECOND`

# 残りの有効期限を表示
echo "残り有効期限は、${DAYS}日です。"

新しいドメインの発行と証明書を発行した際にドメインリストに登録してしまえば、
自動チェックの対象になるので何かと便利。

通知設定

また、有効期限が近づくと下記のようにSlackに通知するようにしたりしています。

Slack_SSLの有効期限チェック.png

これで、自動更新がうまく動いていなかった場合も検知できますし、
手動で更新しなければいけない部分にも漏れなく対応ができますね!
(ただし、DNSに設定時にチェック対象のリストに登録していれば...)

まとめ

簡単でしたが現状では上記で十分ですが、今後対象ドメイン数が増えてきたときに登録し忘れなどが起きるような気もしており...
このあたり、DNSから自動で取得してチェックを入れるような仕組みにしているほうが本当はもっと安心なんでしょうね。

時期を見てこのあたりもしっかり整備していければと思っております。

megadreams14
平成元年生,兵庫県出身,スタートアップ企業(介護×IT)でCTOやってます。 AWS Summit 2014Tokyo,Jenkins Conference 2015, Developers Summit 2015で発表!! 介護×ITという分野に興味ある方、お気軽にご連絡下さい!!
https://brightvie.me/
brightvie
「あなたの“困った・できたらいいな“をカタチに」 ブライト・ヴィーは手作りのICTシステムをお届けするエンジニアチームです。
https://brightvie.me/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした