jenkinsでsslの有効期限を定期的にチェック

この記事は、newsdict.hatenablog.jp から移設しました。

SSL証明書の有効期限のお知らせは販売元から通常メールなどで通知してもらえるが、いらないメールが大量に多くなった昨今、メール自体を見逃しかねない。

それで jenkins で定期的にSSL有効期限のチェック -> slackへ通知という フローを作ることにした。jenkins -> slackはプラグインの設定で行い、jenkinsには、定期的に実行できるシェルスクリプト(以下参照)を用意する

#!/bin/bash
DOMAIN=$1
CERT=${DOMAIN}_ssl_tmp_file
expire_second=$(expr $3 \* 60 \* 60 \* 24)
function dateComp()
{
    # 1970/01/01 00:00:00 からの経過秒に変換
    ARG1_SECOND=date -d "$1" '+%s'
    ARG2_SECOND=date -d "$2" '+%s'
    # 差を返却
    diff_second=$(expr $ARG1_SECOND - $ARG2_SECOND)
    if [ 0 -lt $diff_second ]; then
        if [ $expire_second -gt $diff_second ]; then
            expire_day=$(expr $diff_second / \( 60 \* 60 \* 24 \) )
            echo "expire $DOMAIN ssl after $expire_day days"
        fi
    fi
}
openssl s_client -connect ${DOMAIN}:443 -servername $2 </dev/null > ${CERT} 2>/dev/null
SSL_DATE=$(date --utc +'%Y/%m/%d %H:%M:%S' --date="openssl x509 -text -in ${CERT} | sed -e "/Not After/{s/^.* : //;p};d"")
DATE=$(date +'%Y/%m/%d %H:%M:%S' --utc)
comp=$(dateComp "$SSL_DATE" "$DATE")
if [ -n "$comp" ]; then
    echo $comp
    exit 1;
else
    echo "validate ok"
    echo "expire date: $SSL_DATE"
fi

※ 参考資料:
http://qiita.com/uemura/items/a3a0937f77494e62213c
http://qiita.com/TanukiTam/items/6572ea18c2de80ebf458

コメントを残す

メールアドレスが公開されることはありません。