openssl 명령에서 만료 날짜를 구문 분석합니다.

openssl 명령에서 만료 날짜를 구문 분석합니다.

원래는 SSL 인증서의 날짜를 자동으로 확인하는 방법을 물어보려고 했는데, 알아냈으니 아래에서도 답변을 찾아보실 수 있습니다.

답변1

이것이 내가 생각해낸 해결책이다:

스크립트로 만들고 매일 cron을 통해 호출하면 인증서 중 하나가 만료되기 직전에 이메일을 받게 됩니다.

#!/bin/bash 
gracedays=14
for server in myserver1 myserver2 myserver3;
do
    data=`echo | openssl s_client -connect "${server}:443" -servername "${server}" 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`

    ssldate=`date -d "${data}" '+%s'`
    nowdate=`date '+%s'`
    diff="$((${ssldate}-${nowdate}))"

    if test "${diff}" -lt "$((${gracedays}*24*3600))";
    then
        if test "${diff}" -lt "0";
        then
            echo "The certificate for ${server} has already expired."
        else
            echo "The certificate for ${server} will expire in $((${diff}/3600/24)) days."
        fi
    fi
done

문제는 해결되었습니다. 누구든지 더 멋지게 만들고 싶거나 저장소에 저장하고 싶다면 모듈로 만들어주세요. 부담 없이 사용하세요!

답변2

Openssl에는 최소 1.0.2부터 이 기능이 내장되어 있습니다. openssl x509 -checkend 86400다음 날 몇 초 내에 인증서가 만료되는지 확인하고 bash 스크립트를 통해 직접 테스트할 수 있도록 ERRORCODE를 반환합니다.

답변3

data=`echo | openssl s_client -connect "${server}:443" -servername "${server}" 2>/dev/null | openssl x509 -noout -dates | grep notAfter | sed -e 's#notAfter=##'`

SNI 호스트를 지원합니다.

관련 정보