원래는 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 호스트를 지원합니다.