もともとSSL証明書の日付を自動的に確認する方法を尋ねてみました。
答え1
これが私が思いついた解決策です:
スクリプトを作成して毎日cron経由で呼び出すと、証明書の1つが期限切れになる直前に電子メールが届きます。
#!/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ホストをサポートします。