gpt4 book ai didi

ubuntu - curl:连接中出现未知的 SSL 协议(protocol)错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:24 25 4
gpt4 key购买 nike

我正在尝试使用 Tomcat 7 + SSL 从 AWS 中的一台服务器 (A) 连接到 AWS 中的另一台服务器 (B)。

服务器A:

  • Ubuntu 14.04
  • OpenSSL 1.0.1f

服务器 B:

  • Ubuntu 13.04
  • Tomcat 7
  • OpenSSL 1.0.1c
  • SSL 证书

我正在服务器 A 中尝试以下命令:

curl https://Server.B -v

我得到以下异常:

* Connection #0 to host test.salespredict.com left intact
yakirm@ip-10-214-10-178:~$ curl https://Server.B.com -v
* Rebuilt URL to: https://Server.B.com/
* Hostname was NOT found in DNS cache
* Trying 54.245.81.*...
* Connected to Server.B.com (54.245.81.*) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to Server.B.com:443
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to Server.B.com:443

我试着用 OpenSSL 检查

openssl s_client -connect Server.B.Address:443

我得到以下结果:

CONNECTED(00000003)
140284858304160:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

如果我尝试从我自己的计算机 (OS X Mavericks) 连接,curl 成功但 openssl 命令返回相同的结果。

顺便说一下

如果我正在尝试:

curl https://Server.B -v -ssl3

它在服务器 A 上工作,但我不想指定 SSL 协议(protocol)。

编辑

服务器 B - Tomcat 配置:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" 
enableLookups="true" maxThreads="200" port="443" keystoreFile="/var/lib/tomcat7/conf/Path/Path_keystore" keystorePass="******" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />

最佳答案

设置--sslv3之间的主要区别并且不设置它,客户端将不会在初始 ClientHello 消息中宣布支持高于 SSL3.0 的版本。通常客户端和服务器商定一个双方都支持的版本,所以客户端公布自己支持的最佳SSL版本是正确的。

在您的情况下,您似乎面临这样一种情况,即服务器(或某些中间件)不仅无法使用更新的 TLS 版本,而且也无法正确处理 SSL 3.0,因为如果客户端宣布支持更新的版本。由于服务器软件本身看起来并不陈旧,您要么有一个非常奇怪的服务器设置,要么有一些无法处理正确 TLS 的中间件(即负载平衡器、防火墙......)。

如果您发布有关服务器的更多信息,可能会获得更多信息。您也可以根据 SSLLabs 检查服务器.

编辑:看起来服务器支持 TLS1.* 但当客户端提供ECDHE-RSA-AES256-SHA 密码。使用 openssl s_client -cipher 'ALL:!ECDHE-RSA-AES256-SHA'curl --ciphers 'ALL:!ECDHE-RSA-AES256-SHA' 一样.我认为这是服务器端的问题 - 也许您配置的密码实际上不受 tomcat 中的 SSL 实现支持(这不是 OpenSSL,因为 Java 有自己的实现)并且 Java 在尝试使用它们时会发出声音.

关于ubuntu - curl:连接中出现未知的 SSL 协议(protocol)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26481731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com