OpenSSL 不斷告訴我“無法取得本地頒發者憑證”

OpenSSL 不斷告訴我“無法取得本地頒發者憑證”

我使用的是 CentOS,它安裝了 OpenSSL 1.0.2k-fips,並且我已經建置並安裝了 1.1.0g 版本,作為此處概述的 HTTP2 安裝的一部分:https://www.tunetheweb.com/performance/http2/

我一直使用 1.1.0g 沒問題,但最近我更新了證書,現在在嘗試驗證 CA 時似乎丟失了。 CA 檔案的位置沒有改變,1.0.2k-fips 版本似乎沒問題,但 1.1.0g 並沒有擺脫抱怨:

Verify return code: 20 (unable to get local issuer certificate)

所以,我已經驗證了證書是好的,位置沒有改變,我沒有手動更改任何配置。

我想也許我應該重建 1.1.0g,但這沒有任何改變。我還嘗試使用命令-CApath的選項openssl,如下所示(使用與 1.0.2k-fips 使用的相同的目錄):

echo | /usr/local/ssl/bin/openssl s_client -connect example.com:443 -CApath /etc/pki/tls

我也嘗試過-CAfile,直接指向ca-bundle.crt我知道具有正確證書的證書(1.0.2k-fips 使用它們沒有問題),仍然沒有變化。

我不知道為什麼它不會獲取我的證書,並且想知道在我更改證書之前這個問題是否可能已經存在(我檢查了它們在更改後是否有效,可能 1.1.0g 已經被破壞了那個點)。

我認為這可能是由於在系統上執行的更新造成的,破壞了某些連結或文件,但是當證書內容看起來正常時該去哪裡查找?或者 1.1.0g 是否缺少一些我需要指出的其他/更多證書?

答案1

您可以讓 s_client 向您顯示憑證鏈-showcerts

openssl s_client -connect example.com:443 -showcerts </dev/null

這將從憑證鏈開始,然後顯示有關伺服器憑證和 TLS 連線的其他資訊。所有這些應該可以幫助您找出問題所在。它可能位於中間憑證中,而不是 CA 中。

您可以透過篩選輸出來快速取得憑證鏈的摘要:

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null |
sed -e '1,/Certificate chain/d' -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/d' -e '/---/,$d'

相關內容