技術

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

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

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

  2. 技術

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

    こんにちわ、どばきちです。前回はLightsailの…

  3. WordPress開発・運用

    WordPressテーマの修正を本番環境にデプロイする

    こんにちわ前々回はこちらで、WordPressのローカル開発…

  4. 技術

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

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

  5. 技術

    [docker][PHP]Laravelでステップ実行してみる

    こんにちわ、どばきちです。前回はdockerでLar…

  6. WordPress開発・運用

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

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

コメント

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

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

2024年7月
1234567
891011121314
15161718192021
22232425262728
293031  
  1. フリーランス

    最終出社!
  2. フリーランス

    国民年金の申請は配偶者の分を忘れずに!
  3. 技術

    スプレッドシートの内容をChatworkに定期通知する<後編>
  4. フリーランス

    インボイスの登録申請。。気をつけて!
  5. WordPress開発・運用

    [ConoHa]WordPressサーバ PHPVer7.4からVer8.3に更…
PAGE TOP