Bash

檢查 SSL 證書是否有效的腳本

  • November 11, 2019

我有多個 SSL 證書,我希望在證書過期時收到通知。

我的想法是創建一個 cronjob,它每天執行一個簡單的命令。

我知道opensslLinux中的命令可以用來顯示遠端伺服器的證書資訊,即:

openssl s_client -connect www.google.com:443

但我沒有在此輸出中看到到期日期。另外,我必須用CTRL+終止這個命令c

如何從腳本(最好使用openssl)檢查遠端證書的到期情況並以“批處理模式”執行,以便它在沒有使用者互動的情況下自動執行?

您的命令現在需要一個 http 請求GET index.php,例如。改用這個:

if true | openssl s_client -connect www.google.com:443 2>/dev/null | \
 openssl x509 -noout -checkend 0; then
 echo "Certificate is not expired"
else
 echo "Certificate is expired"
fi

  • true: 只會在 eof 之後不提供任何輸入,以便 openssl 在連接後退出。

    • openssl ...:您問題中的命令
    • 2>/dev/null: 錯誤輸出將被忽略。
  • openssl x509:啟動 X.509 證書數據管理。

    • 這將預設從標準輸入讀取
    • -noout:抑制整個證書輸出
    • -checkend 0: 檢查證書是否在接下來的 0 秒內過期

引用自:https://unix.stackexchange.com/questions/234970