SSL 인증서 만료 확인

2213 단어 SSLJenkins
BRIGHT VIE Advent Calendar 2017 - Qiita 의 7일째입니다!

어드벤트 캘린더도 1주일째!
지금까지 계속 달리고 있지만, 쓰기가 계속되고 있기 때문에 슬슬 버티고 있습니다 ...
오늘은 가벼운 느낌으로. . .

소개



폐사에서도 퍼블릭인 증명서나 프라이빗 증명서 등 다양한 타입의 SSL 증명서를 이용하고 있습니다만,
조직으로서 제대로 움직이기 전에는, SSL의 증명서 체크가 없거나,
운용중에도 불구하고 유효기간 만료시켜 버리거나 하는 것이 상당히 일어나고 있는 상황이었습니다;;

최근에는, Let's Encrypt등도 이용하고 있어, cron으로 갱신 처리를 짜넣거나 해 두면 안심입니다만,
만약을 위해 자동 갱신의 경우에도 정상적으로 갱신이 되고 있는지,
수동의 경우에는 갱신하는 것을 잊지 않는가를 체크하고 싶다고 하는 경우는 있을까 생각합니다.

간단한 체크 방법



당사에서 이용하고 있는 간이적인 유효기간의 체크는 Jenkins씨가 열심히 해 주고 있습니다.
(실행 환경은, Amazon Linux AMI로, 서버의 타임 존이 JST)
# 対象のドメインの有効期限を取得(GMT)
## (2018/03/11 EXPIREとなっていたのをEXPIREDに修正)
EXPIRED=`openssl s_client -connect 対象ドメイン:443 < /dev/null 2> /dev/null | openssl x509 -text | grep "Not After" | awk -F ' : ' '{print $2}'`

# 有効期限をUnixTimestamp形式で取得する(GMT)
EXPIRED_UNIXTIME=`date '+%s' -d "\`echo $EXPIRED\`"`

# 取得した有効期限はGMTであるため、日本標準時間のJSTに変更する
EXPIRED_UNIXTIME=`expr $EXPIRED_UNIXTIME - 32400`

# あと何日かを取得するために現在の時間をUnixTimestamp形式で取得する
NOW_UNIXTIME=`date "+%s"`

# 有効期限から今の時間を引くことで、残り時間をUnixTimestmap形式で計算する
DIFF_SECOND=`expr $EXPIRED_UNIXTIME - $NOW_UNIXTIME`

# 1日は、60秒*60分*24時間=86400秒
ONE_DAY_SECOND=86400

# 残り日数を取得する
DAYS=`expr $DIFF_SECOND / $ONE_DAY_SECOND`

# 残りの有効期限を表示
echo "残り有効期限は、${DAYS}日です。"

새 도메인을 발급하고 인증서를 발급 할 때 도메인 목록에 등록하면,
자동 체크의 대상이 되므로 무언가 편리.

알림 설정



또한, 유효기간이 가까워지면 아래와 같이 Slack에 통지하도록 하고 있습니다.



이제 자동 업데이트가 제대로 작동하지 않는 경우에도 감지 할 수 있으며,
수동으로 갱신해야 할 부분에도 누출없이 대응할 수 있군요!
(단, DNS에 설정시 체크 대상 목록에 등록한 경우 ...)

요약



간단했지만 현재는 위에서 충분하지만, 향후 대상 도메인 수가 늘어날 때 등록하는 것을 잊어 버리는 등의 기분이 들고 있습니다 ...
이 근처, DNS로부터 자동으로 취득해 체크를 넣는 것 같은 구조로 하고 있는 편이 진짜는 좀 더 안심이겠지요.

시기를 보고 이 근처도 제대로 정비해 나가면 좋겠다고 생각하고 있습니다.

좋은 웹페이지 즐겨찾기