CentOS PHP cURL NSS 错误 5938

sto*_*ain 7 ssl centos curl nss

cURL 和 PHP 在几个 CentOS 机器上有一个奇怪的问题。

在本地,我运行的是 CentOS 6.3。远程是 CentOS 5.9

在本地,box 收到一个请求,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
Run Code Online (Sandbox Code Playgroud)

谷歌搜索错误也无济于事。看起来 twitter 有一个类似的问题(https://dev.twitter.com/discussions/1549),他们显然已经解决了这个问题,但没有详细说明它是如何解决的。

任何关于在哪里寻找/做什么来缓解问题的想法都将不胜感激。

小智 5

这是用 NSS 编译的 curl 的一般问题(只有 redhat-linuxes、debian 和 suse curl 包没有编译,没有 nss)。您需要从没有 nss-library 的源代码编译 curl。

所以,我还没有解决 https-connections 如何与 nss-curl 一起工作的问题。

curl --version curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.14.3.0 zlib/1.2.7 libidn/1.26 libssh2/1.4.3 协议:dict 文件 ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 特点:AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz

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 ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 特性:AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

  • 对我们来说,这个问题特别与 NSS 对 TLS 1.2 的支持有关;将 TLS 版本强制为 1.1 解决了该问题,例如 curl --tlsv1.1 www.example.com)。强制使用 TLS 版本允许我们继续使用 NSS 版本。 (3认同)