openssl 升級 |驗證證書失敗

openssl 升級 |驗證證書失敗

我正在 CentOS7 機器上工作,我正在嘗試升級我的機器的 openssl 版本 1.0.2k -> 1.1.0l。升級後,與我的伺服器(未更改)的握手過程似乎失敗,我正在嘗試找出原因。

使用兩個 openssl 版本運行以下命令:

openssl s_client -showcerts -connect 伺服器:連接埠

導致較新的失敗(如果我提供 -CAfile 驗證適用於兩者)。結果的差異:

舊1.0.2k(握手成功):

伺服器臨時金鑰:ECDH、P-256、256 位元新、TLSv1/SSLv3、密碼為 ECDHE-RSA-AES128-GCM-SHA256 新 1.1.0l(握手失敗):

伺服器臨時金鑰:X25519,253 位元新,TLSv1.2,密碼是 ECDHE-RSA-AES128-GCM-SHA256 驗證回傳代碼:20(無法取得本地頒發者憑證) 我希望能幫助您理解差異以及原因他們不同。

僅供參考,我在這裡開始了類似的威脅: https://stackoverflow.com/questions/68763253/openssl-upgrade-fail-validating-certificate?noredirect=1#comment121583146_68763253 沒有太多運氣。

謝謝 :)

答案1

在 Centos 7 中,您還可以使用以下命令修復此問題:

#Prepare to compile
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
yum groupinstall -y "Development Tools" "Development Libraries"

#Build from source
cd /usr/src
# --no-check-certificate because of that issue, your system will not validate letsencrypt certificate at openssl.org until finish update
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1l.tar.gz
tar -zxf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
./config
make
make install

yum install ca-certificates -y 

答案2

供將來參考,在此處新增解決方案。

一旦開始使用 openssl 版本 > 1.0.2kcentos7 機器,根解析路徑似乎有行為變化。

Openssl 會遍歷預先定義的憑證儲存位置列表,但是,一旦在 /val/ssl 中遇到 cert.pem 文件,它就會對其進行測試,如果無法驗證您的遠端伺服器,則會失敗。

我的「好」憑證位於 /etc/ssl 中,因為它是客戶端的計算機,所以我無法要求他刪除 /var/ssl 檔案。

我的解決方案是以程式設計方式選擇正確的 cert.pem,以防 openssl 失敗(不更改機器的 openssl 版本,這是禁止的)。

相關內容