我正在嘗試製作一個 bash 腳本,該腳本將檢查我的網站客戶端的 SSL 狀態並傳回錯誤。但對於每個 IP,wget https://$ip:$port
都會出現以下錯誤:
ERROR: The certificate of 1.2.3.4 is not trusted
ERROR: The certificate of 1.2.3.4 hasn't got a know issuer
當我嘗試使用 Firefox 時,我擁有每個 IP 的憑證。所以我嘗試將 Firefox CA 轉儲到以下儲存庫:
wget http://$ip:$port --ca-directory=(directory of CA from Firefox)
但這並沒有改變任何事情。
我想,wget
沒有找到 SSL 證書,而且我不知道如何取得它們。
如何取得證書資訊?
答案1
通常,SSL 憑證會頒發給主機名稱(例如www.example.com
,而不是 IP 位址)。
因此,當您使用 IP 位址時,您正在存取的 URL 與頒發憑證的主機名稱之間會不符。
其次,Firefox 中的 CA 目錄可能不適合,因為根據 wget 手冊頁的要求:
--ca-directory=目錄指定包含 PEM 格式的 CA 憑證的目錄。每個檔案包含一個 CA 證書,檔案名稱是基於從證書派生的雜湊值。 …
我認為 wget 使用 openssl 庫,可能使其成為一個更詳細的實用程式來檢查憑證狀態,例如在查詢中確定 SSL 憑證的到期日期:
echo "GET /" | openssl s_client -connect servername:port | openssl x509 -noout -dates