技術

SSLサーバー証明書の更新期限通知がしたい

こんにちわ、どばきちです。

SSLサーバー証明書の更新期限を忘れていて、ある日突然、本番サーバーでアクセス障害を起こしたことはないでしょうか。僕はあります。。実際に有効期限が切れてしまってから対応すると大変です。今すぐ復旧しなければいけないのに、以下のような対応が必要になります。

  • CSRの作成(SSLサーバー証明書の作成に必要になります)
  • SSLサーバー証明書を購入(会社の場合、経理部門などに決済を依頼する申請などあって時間がかかる場合も)
  • SSLサーバー証明書をロードバランサ、CDNなどに設定が必要

特に証明書の購入がすぐできる訳ではないということがあるかと思います。

AWSのACMの様に自動更新してくれる様であれば良いのですが、全てがそういう訳でもないので、その時の教訓を踏まえて簡単にSSLサーバー証明書の更新期限を把握できる、エンジニア以外でも気づく仕組みの作り方についてご紹介できたらな、と思います。

SSLサーバー証明書の更新期限通知の概要

個別に話に入る前に全体について触れたいと思います。以下の様な流れを想定しています。

  1. 何かしらのCLIコマンドでSSLサーバー証明書の有効期限情報を取得する
  2. 有効期限の日付から残日数を計算する
  3. Slackに通知する

SSLサーバー証明書の更新期限をCLIから取得する

以下に具体的な例を載せたいと思います。

open_sslを利用する例(ドメインを差し替えると他のドメインでも利用できます)

❯ openssl s_client -connect "dubakichi.com":443 < /dev/null 2> /dev/null | openssl x509 -text | grep "Not After" | awk '{ print($4 " " $5 " " $6 " "  $7 " " $8) }' | xargs -I {} gdate +"%Y-%m-%d %H:%M:%S" -d {}
2022-05-27 18:36:04

curlでも同様に取得することができます

❯ curl -v "https://dubakichi.com" 2>&1 1> /dev/null | grep "expire date:" | grep 'expire date:' | awk '{ print($4 " " $5 " " $6 " "  $7 " " $8)}' | xargs -I {} gdate +"%Y-%m-%d %H:%M:%S" -d {}
2022-05-27 18:36:04

※ Macの環境でgdate(GNUのdateコマンドをインストール)を利用しています。linux環境であれば、gdateに置き換えると動くと思います(動かなかったらごめんなさい。。

このコマンド例で実施していることはどちらも以下の様な内容となります。

  • open_ssl もしくはcurlコマンドの出力結果からSSLサーバー証明書の有効期限のみを抽出する
  • GMTで出力される時刻をJSTに変換する

有効期限の日付から残日数を計算する

シェルスクリプトで対応する場合の例を記載します。

today=`gdate +"%Y-%m-%d %H:%M:%S"`
echo "today:" $today;
echo "expire:" $expire_date; // 先程ご紹介したコマンドで取得した有効期限

expire_unix_time=`gdate +%s --date "$expire_date"`;
today_unix_time=`gdate +%s --date "$today"`;
diff=$(($expire_unix_time-$today_unix_time));

days_left=$(($diff / (60 * 60 * 24)));
echo "残日数:" $days_left;

現時点と有効期限をunixtimeに変換してその差分で残りの日数を算出しています。

Slackへの通知

通知するために必要な情報が揃ったので後はSlack、Chatwork、メールなどに通知するだけです。

今回はSlackへの通知についてまた別記事にまとめようかと思います。

僕の様にある日突然の本番環境の不具合に見舞われて苦しむ人がいなくなることを心から願っています。

それでは、また!

[AWS]VPC消せないけど費用はかかる悪夢前のページ

CLI環境からSlackに通知する次のページ

関連記事

  1. 技術

    [AWS]Amazon Linux2 カーネル4.14から5.10へ

    こんにちわ、どばきちです。Amazon Linux2…

  2. WordPress開発・運用

    [ConoHa]WordPressサーバ PHPVer7.4からVer8.3に更新した

    こんにちわ僕はConoHaWingで借りているサーバにこのブ…

  3. 技術

    ドメイン移管でwhoisのネームサーバー変更は必須だった

    こんにちわ先日ドメイン移管をしたんですよ。ネームサーバーも変…

  4. フリーランス

    iPhoneの領収書整理を自動化してみた話

    こんにちわ、どばきちです。フリーランスになってからと…

  5. WordPress開発・運用

    WordPressテーマ開発環境を準備する

    こんにちわ前回はWordPressのローカル開発環境を構築す…

  6. 技術

    2024年秋 プロジェクトマネージャー試験受験するど!

    こんにちわIT系のお仕事をされている方は知っている方も多いか…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2025年4月
 123456
78910111213
14151617181920
21222324252627
282930  
  1. フリーランス

    退職日は月末を避けた方が良い?
  2. 技術

    [AWS]1コインサーバーでLAMP(Laravel8)を使う<後編>
  3. 技術

    HHKBでMacにログインできるようになった!
  4. フリーランス

    iPhoneの領収書整理を自動化してみた話
  5. 技術

    [AWS]VPC消せないけど費用はかかる悪夢
PAGE TOP