CentOS PHP cURL NSS 錯誤 5938

CentOS PHP cURL NSS 錯誤 5938

在幾個 CentOS 機器上遇到 cURL 和 PHP 的奇怪問題。

在本地,我運行的是 CentOS 6.3。遠端是CentOS 5.9

在本地,盒子接收請求,scp 將檔案傳送到遠端伺服器,然後透過 PHP 向遠端伺服器執行 cURL 請求以傳送一些資訊。該請求在當天的第一次嘗試時總是失敗。後續請求正常運作。 Remote 具有有效的 SSL 憑證 - 即使如此,關閉憑證和主機驗證也無法解決問題。

日誌記錄並沒有太大幫助。將詳細程度調至 11,最有意義的條目如下:

* About to connect() to www.example.com port 443 (#0)
*   Trying 203.0.113.10... * connected
* Connected to www.example.com (203.0.113.10) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -5938
* Closing connection #0
* SSL connect error

谷歌搜尋錯誤也沒有多大幫助。看起來 Twitter 也有類似的問題(https://dev.twitter.com/discussions/1549)他們顯然已經修復了這個問題,但沒有詳細說明它是如何修復的。

任何關於在哪裡尋找/採取什麼措施來緩解問題的想法將不勝感激。

答案1

這是使用 NSS 編譯的curl 的普遍問題(僅限沒有使用nss 編譯的redhat-linuxes、debian 和suse curl 軟體包)。您需要從沒有 nss-library 的原始碼編譯curl。

所以,我還沒有解決 https-connections 如何與 nss-curl 一起工作的問題。

curl --版本curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.14.3.0zlib/1.2.7 libidn/1.26 libssh2/1.4.3 協定: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 協商

curl --version curl 7.25.0 (x86_64-suse-linux-gnu) libcurl/7.25.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.0 協定: dict file ftp ft imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 功能:非同步DNS GSS 協商IDN IPv6 大檔案NTLM NTLM_WB SSL libz TLS-SRP

答案2

我在使用過時的 CentOS 6.x 系統連接到停止接受 TLS 1.0、僅允許 TLS 1.1 及更高版本的嵌入式設備時遇到了類似的“NSS 錯誤 -5938”。對我來說,解決方案是做一個yum update.我看到發生了這些更新:

---> Package curl.x86_64 0:7.19.7-46.el6 will be updated
---> Package curl.x86_64 0:7.19.7-52.el6 will be an update
...
---> Package nss.x86_64 0:3.21.0-0.3.el6_7 will be updated
---> Package nss.x86_64 0:3.21.3-2.el6_8 will be an update

我認為這可能是有幫助的具體變化:

$ rpm -q --changelog curl
[...]
* Mon Jan 11 2016 Kamil Dudka <[email protected]> 7.19.7-50
- use the default min/max TLS version provided by NSS (#1289205)

答案3

NSS 錯誤 5938 訊息通常表示伺服器終止了您的連線。您應該檢查curl 目標的伺服器端日誌以了解連線被終止的原因。

它可能像「無法取得 X 的反向 dns 主機名稱」一樣簡單。

相關內容