LoginSignup
1
0

More than 3 years have passed since last update.

サーバ群のサーバ証明書の失効期限を自動でチェック+メールする

Last updated at Posted at 2020-12-05

はじめに

 インターネットにサーバを公開している人には、切っても切れないサーバ証明書ですが、契約期間が1年毎になったり、Let's encryptだと3か月毎とか、有効期限が短くなり管理の手間が増えて困ります。今はまだ、有償のサーバ証明書も2年または3年の有効期間の箇所のサーバもあったりしますので、更新の申請漏れに関しては注意しないといけません。

ここに記録する記事の内容について

 管理対象の複数のサーバの有効期限を自動で確認して、残りが2週間と1週間を切ったら毎日メールを管理者に通知するShellを記載します。
 Let's encryptなどは、サーバ証明書の自動更新をShellで実施していますが、時々失敗することもあるので、更新日の把握は大切です。

ドメイン一覧ファイルの書式

管理対象のドメインをdomain.lstに記載します。

下記はサンプルです。先頭行に#はコメント行となります。

domain.lst
#commment.com 
www.kantei.go.jp
www.mod.go.jp

検査用のShellの中身

check_ssl.sh
#! /bin/bash
# -checkend  期限切れまでの秒数
#  [2592000](=30日×24時間×60分×60秒)
#  [1209600](=14日×24時間×60分×60秒)
#  [604800](= 7日×24時間×60分×60秒)

# 期限切れの時にメールを送信する宛先
MAIL_TO=HegeHege@gmail.com
# 検査対象のドメイン名一覧ファイル
LIST_FILE=/root/LIST/domain.lst

touch /tmp/crept_date.txt

for DOMAIN in `cat  ${LIST_FILE}| grep -v "^#"`
do
  Val=`openssl s_client -connect $DOMAIN:443  -servername $DOMAIN < /dev/null 2> /dev/null | openssl x509 -checkend 604800 | grep "not" | wc -l`
  if [ "$Val" = "0" ];
  then
        echo "$DOMAINのサーバ証明書は約1週間後に無効となります。" >> /tmp/crept_date.txt
  else
     Val=`openssl s_client -connect $DOMAIN:443  -servername $DOMAIN < /dev/null 2> /dev/null | openssl x509  -checkend 1209600 | grep "not" | wc -l`
     if [ "$Val" = "0" ];
     then
        echo "$DOMAINのサーバ証明書は約2週間後に無効となります。" >> /tmp/crept_date.txt
     fi
  fi
done

Val=`cat /tmp/crept_date.txt | wc -l`
if [ "$Val" != "0" ];
then
 mailx -s "サーバ証明書期限切れ情報" ${MAIL_TO}  < /tmp/crept_date.txt
fi
\rm -f /tmp/crept_date.txt

cronにShellを追加

月曜、水曜、金曜の朝8時にサーバ証明書期限切れを調べる。
下記をcrontab -e コマンドで追加する。

00 08 * * 1,3,5 sh /root/bin/check_ssl.sh
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0