Ssl
無法獲取 cURL 或 wget 來驗證某些 SSL 證書
我注意到我們使用 cURL 的連結檢查器在驗證 SSL 證書時越來越失敗。我正試圖弄清楚這一點。
例如, https: //www.bgetem.de/ 在我的 Windows 7 機器上的每個瀏覽器(IE 11、Firefox、Opera、Chrome)上都可以正常打開,但我的 CentOS 6 和 Ubuntu 16.04 上的 cURL(和 wget)不能驗證證書。
這是 CentOS 的 cURL 的詳細輸出(版本
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
)* About to connect() to www.bgetem.de port 443 (#0) * Trying 193.104.3.166... connected * Connected to www.bgetem.de (193.104.3.166) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * Peer's certificate issuer is not recognized: 'CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB' * NSS error -8179 * Closing connection #0 * Peer certificate cannot be authenticated with known CA certificates
和 Ubuntu(版本
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
):* found 173 certificates in /etc/ssl/certs/ca-certificates.crt * found 695 certificates in /etc/ssl/certs * ALPN, offering http/1.1 * SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384 * server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none * Closing connection 0 curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
知道問題是什麼以及如何解決嗎?
正如錯誤消息已經解釋的那樣:伺服器證書無法使用 CAfile 中的已知 CA 證書進行身份驗證:(
/etc/pki/tls/certs/ca-bundle.crt
因為伺服器證書是由您的系統未知的 CA 頒發的)。出現此類消息的兩個相當常見的原因:
- 證書實際上是由未知 CA(例如內部 CA)簽署的。
- 該證書使用來自知名 CA 之一的中間 CA 證書進行簽名,並且遠端伺服器配置錯誤,因為它不包含該中間 CA 證書作為其響應的 CA 鏈。
感謝您提供域名:這使我們能夠測試 SSL 伺服器並確認:CA 鏈不完整:
作為該伺服器的管理員,您可以/應該修復鏈文件以防止認證路徑中的那些“額外下載”部分。
如果您不是該伺服器的管理員並且想要修復該客戶端:您自己下載該中間證書並將其添加到本地信任庫。