技術

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. 技術

    CLI環境からSlackに通知する

    こんにちわ、どばきちです。今回は前回の記事の続きです…

  2. フリーランス

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

    こんにちわ、どばきちです。前回はiPhoneの領収書…

  3. 技術

    スプレッドシートの内容をChatworkに定期通知する<前編>

    こんにちわ先日Googleスプレッドシートにある内容を定期的…

  4. WordPress開発・運用

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

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

  5. WordPress開発・運用

    [docker]WordPressのローカル開発環境を用意してみた

    こんにちわ先日WordPressのテーマを微修正したのですが…

  6. 技術

    [Mac]codeコマンドでCursorが起動するようになってた

    こんにちわ僕はVisual Studio Codeをターミナ…

コメント

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

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

2025年1月
 12345
6789101112
13141516171819
20212223242526
2728293031  
  1. フリーランス

    避けては通れない事業主勘定
  2. 雑談

    トレンドマイクロに評価してもらおう!
  3. フリーランス

    年金の申請マイナポータルでできる!
  4. フリーランス

    フリーランス生活2ヶ月でわかったこと
  5. フリーランス

    iDecoへの移換と掛金設定はまた別の話
PAGE TOP