curl错误35:连接中存在未知SSL协议错误

curl错误35:连接中存在未知SSL协议错误,ssl,curl,ssl-certificate,Ssl,Curl,Ssl Certificate,这是我需要访问的安全页面。但我不知道如何获得它的证书文件。我尝试使用Firefox,但它说一旦输入url就无法获得任何ssl证书 $ curl -I https://9.185.173.135 curl: (35) Unknown SSL protocol error in connection to 9.185.173.135:443 从我的笔记本电脑绝对可以访问服务器。一旦我获得了证书文件,我假设我可以将其导入Firefox,然后使用我的凭据通过身份验证(我已经获得了用户名/密码) 对不起

这是我需要访问的安全页面。但我不知道如何获得它的证书文件。我尝试使用Firefox,但它说一旦输入url就无法获得任何ssl证书

$ curl -I https://9.185.173.135
curl: (35) Unknown SSL protocol error in connection to 9.185.173.135:443
从我的笔记本电脑绝对可以访问服务器。一旦我获得了证书文件,我假设我可以将其导入Firefox,然后使用我的凭据通过身份验证(我已经获得了用户名/密码)

对不起,我根本不是安全专家。还有什么我可以试试的吗


非常感谢

对鲁迪:谢谢你的提示,这告诉了我很多信息

不知何故,安全页面的管理员每天“刷新”证书状态。因此,尽管我昨天被阻止访问它,但它慷慨地让我获得了另一个证书,并将其添加到Firefox的例外列表中

所以一切都很顺利,我真的从昨天的经历中学到了一些东西。

试试这个

$ curl -I http://9.185.173.135
HTTP/1.1 200 OK
Content-Length: 686
Content-Type: text/html
Content-Location: http://9.185.173.135/Default.htm
Last-Modified: Mon, 16 Mar 2009 05:05:38 GMT
Accept-Ranges: bytes
ETag: "a851dbd8f4a5c91:d41"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Tue, 13 Jul 2010 04:09:35 GMT

在目标SSL站点上更新SSL证书后,我出现了相同的错误。 我的源操作系统是Centos 6,升级到新的curl版本解决了这个问题。 *请注意,我已经在使用curl-k(不安全选项),但仍然会出现该错误。本质上,此错误是由nss或openssl过时引起的。
yum-y安装curl nss openssl
请记住,如果您有一个像PHP这样的web应用程序调用curl,则需要重新启动Apache才能使更新生效


我已经根据本指南进行了更新:

在Eclipse部署的本地主机上对Tomcat服务器运行curl/httpie时,我遇到了相同的错误。事实证明,Eclipse部署的default server.xml禁用了https。具体来说,下面的部分在server.xml中被注释掉

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3); // Force SSLv3 to fix Unknown SSL Protocol error

在取消注释并添加两个keystore参数之后,curl命令开始工作(如果证书是自签名的,则使用--unsecure选项)


keystoreFile=“/path/to/your/keystore”
keystrepass=“yourpass”/>

我有一些解决方案可以解决这个问题:

1] 尝试更新curl/php/apache[
yum更新
]

2] 重新启动apache

那些对我有用

我也有类似的问题:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
           keystoreFile="/path/to/your/keystore"
           keystorePass="yourpass" />
(由于我请求了端口3000,所以不确定号码-9847来自何处)

修复:我的服务器在端口3000上运行的是“http”而不是“https”go figure。

如果curl版本低于7.34,您可以使用
--tlsv1
选项来解决此问题

 curl https://localhost:3000
 ...
 curl: (35) Unknown SSL protocol error in connection to localhost:-9847

在我的AIX VM上,也存在这个问题,请使用
--cacert
来指定cacert.pem


curl--cacert/var/ssl/cacert.pemhttps://localhost:3000

你能用
openssl s_客户端-主机9.185.173.135-p 443建立与服务器的连接吗?@Rudi:谢谢你的提示,请查看我的更新答案:)我的open_ssl希望我执行-connect:而不是-host-p-在较新版本中可能已更改。服务器可能正在使用SSL2或SSL3。。。那些协议现在已经被弃用了。但是这在SPDY上不起作用。你得用这个。我不是作者,但这是一个开源项目。仅供参考:我们有这个,但它不起作用。从另一个答案中我们发现:
curl\u setopt($ch,CURLOPT\u SSLVERSION,4)哪个有效。(版本4,而不是3)。这种方法存在安全风险。请参阅PHP文档。请不要对应该接收描述性枚举的对象使用任意数字@例如,WilliamJossCrowcroft错误地将4称为“版本4”(很可能这是CURL\u SSLVERSION\u TLSv1\u 0)。正确的值是CURL\u SSLVERSION\u SSLv3。它也适用于经典环境(Windows 10/Apache)。你帮我省了几个小时的研究时间!
 curl https://localhost:3000
 ...
 curl: (35) Unknown SSL protocol error in connection to localhost:-9847
 curl -I --tlsv1 https://9.185.173.135