我正在尝试向 Twitter API 发出 cURL HTTPS 请求,但出现了以下错误:
[root@webscoming httpdocs]# curl -v https://api.twitter.com
About to connect() to api.twitter.com port 443 (#0)
Trying 199.16.156.199... connected
Connected to api.twitter.com (199.16.156.199) port 443 (#0)
Initializing NSS with certpath: sql:/etc/pki/nssdb
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
NSS error -5990
Closing connection #0
SSL connect error
curl: (35) SSL connect error
我已经从另一台服务器尝试过此操作,并且它按预期运行。该错误是什么意思?我该如何解决?
我的服务器正在运行 CentOS 6.5 版本。
请注意:我可以正确连接https://encrypted.google.com
但未能成功https://api.twitter.com
。
答案1
我看到了类似的问题,但无法访问 Twitter。
我看到的问题是在 RHEL 6.1 -> RHEL 6.4 上,使用 curl 访问 REST API。curl 显示错误:curl:(35) SSL 连接错误
问题最终是,我们运行 REST API 的服务器是 RHEL 6.6,使用的是较新版本的 NSS。一旦我们升级客户端 NSS 版本,curl 就会成功。
我们将客户端从 nss-3.12.10-2.el6_1.x86_64 升级
至:nss-3.16.1-14.el6
答案2
根据源代码该错误表示超时。您与该主机的网络连接很可能存在故障。也可能是 Twitter 出于某种原因过滤了您的 IP。
答案3
这可能是因为代理配置不当,以 http 而不是 https 进行响应。我遇到过这样的情况:当请求的站点被列入黑名单时,代理始终以 http 响应客户端,无论原始协议是什么。
因此更一般地说,当您收到未 TLS 加密的响应时也会发生此错误。
答案4
我遇到了这个问题,并且在 Centos 6.6 完整版中也遇到了另一个问题。
yum upgrade 已加载插件:aliases、auto-update-debuginfo、changelog、downloadonly、fastestmirror、filter-data、fs-snapshot、keys、list-data、local、merge-conf、post-transaction-actions、presto、:priorities、protectbase、ps、remove-with-leaves、rpm-warm-cache、security、show-leaves、tmprepo、tsflags、upgrade-helper、verify、versionlock 设置升级过程 确定最快的镜像 http://vault.epel.cloud/6.10/os/x86_64/repodata/repomd.xml: [Errno 14] 建立 SSL 连接时出现问题,尝试其他镜像。错误:无法检索存储库的存储库元数据 (repomd.xml):C6.10-base。请验证其路径并重试 [root@ Packages]#