![带有 SSL 的 Curl 在 Ubuntu 服务器上不起作用](https://linux22.com/image/595627/%E5%B8%A6%E6%9C%89%20SSL%20%E7%9A%84%20Curl%20%E5%9C%A8%20Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
当我尝试在我的 ubuntu 12.04 TLS 服务器上 Curl SSL 页面时,它不起作用:
非 SSL 页面:
$ curl https://evernote.com/ -vv
[the entire webpage]
SSL 页面:
$ curl https://evernote.com/ -vv
* About to connect() to evernote.com port 443 (#0)
* Trying 204.154.94.73... connected
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to evernote.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to evernote.com:443
这在我自己的机器(OS X)上确实有效。
当我通过 openSSL 尝试时:
$ openssl s_client -connect evernote.com:433
connect: Connection timed out
connect:errno=110
openSSL 版本:
$ openssl version
OpenSSL 1.0.1c 10 May 2012
答案1
您好像打错了。
$ openssl s_client -connect evernote.com:433
远程主机上的端口 433 未打开,这就是您收到错误 110(连接被拒绝)的原因。
尝试使用端口 443(标准 HTTPS 端口)。
至于 curl,我可以在使用时复制该问题evernote.com
,但www.evernote.com
可以正常工作(尽管它向 发送了 302 重定向https://evernote.com/
。
$ curl https://evernote.com/ -vv
* About to connect() to evernote.com port 443 (#0)
* Trying 204.154.94.73...
* connected
* Connected to evernote.com (204.154.94.73) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5938 (PR_END_OF_FILE_ERROR)
* Encountered end of file
* Closing connection #0
curl: (35) Encountered end of file
这意味着服务器中断了连接。无论出于什么原因,它确实不想与我们对话。
这也许不是你能解决的问题。
答案2
遇到了非常类似的问题 - 协议协商存在问题,这可能导致与加密提供商(OpenSSL 库)的沟通不畅。尝试明确设置安全协议,例如:
curl --sslv3 # OR
curl --sslv2 # OR
curl --tlsv1