openssl コマンドで有効期限を解析します。

openssl コマンドで有効期限を解析します。

もともと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ホストをサポートします。

関連情報