错误: 140770FC: SSL例程: SSL23_GET_SERVER_HELLO: 未知协议

11

我当前正在尝试测试在Cloudera Hadoop环境中使用加密Shuffle来实现安全性所做的更改。

我已经创建了证书和密钥库,并将它们放置在适当的位置。

我正在测试TaskTracker的HTTPS端口50060。

当我在该端口上运行curl时,我会收到以下错误响应。

ubuntu@node2:~$ curl -v -k "https://10.0.10.90:50060"
* About to connect() to 10.0.10.90 port 50060 (#0)
*   Trying 10.0.10.90... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
* Closing connection #0
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

当我使用 OpenSSL 客户端进行检查时,收到以下响应:

 ubuntu@node2:~$ openssl s_client -connect 10.0.10.90:50060
CONNECTED(00000003)
139749924464288:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:749:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 225 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

我无法弄清楚导致这个问题的原因?

我有什么遗漏吗?

PS:我已经更新了ca-certificates.crt文件,并且还将服务器.crt文件保存在/usr/share/ca-certificates/mozilla下。

3个回答

6

错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议

看起来在10.0.10.90:50060上没有SSL / TLS服务器在监听。有一个正在监听的服务器,只是不支持SSL / TLS。

当我通过端口80连接到我的网关时,我也可以复制这个问题(而不是443端口)。

$ openssl s_client -connect 192.168.1.1:80
CONNECTED(00000003)
140735109476828:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:787:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 517 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

如果您使用-debug标志,您将看到OpenSSL试图解释为SSL/TLS协议数据的响应中的HTTP

$ openssl s_client -connect 192.168.1.1:80 -debug
CONNECTED(00000003)
write to 0x7fbf58422b90 [0x7fbf58811800] (348 bytes => 348 (0x15C))
0000 - 16 03 01 01 57 01 00 01-53 03 03 64 1d 01 29 f0   ....W...S..d..).
...
0150 - 03 02 01 02 02 02 03 00-0f 00 01 01               ............
read from 0x7fbf58422b90 [0x7fbf58816e00] (7 bytes => 7 (0x7))
0000 - 48 54 54 50 2f 31 2e                              HTTP/1.
140735203164636:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:

我在我的Apache服务器上遇到了这个问题。访问日志告诉我类似于这样的信息:my.host.com:80 [IPv6_address] - - [24/Jan/2016:00:29:23 +0100] "\x16\x03\x01\x02" 400 0 "-" "-" 或者 my.host.com:443 [IPv6_address] - - [24/Jan/2016:00:29:23 +0100] "\x16\x03\x01\x02" 400 0 "-" "-",我觉得非常奇怪。但答案就在其中:客户端用来连接的IPv6地址。为什么?我不知道。但是你的回答给了我最后的提示:没有人在监听它们。所以这里没有匹配。 - func0der

0

在运行Airflow Web服务器服务时,我遇到了这种https错误。由于错误,我在属性(key)文件中错误地提及了.key文件路径,而不是.pem文件路径以启用https。

纠正了.pem文件路径而不是.key文件路径,现在已经可以正常工作了。


0
对于遇到这个问题的任何人:
错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议。
我的问题是curl默认使用ipv6而不是ipv4。终端服务器没有适当配置以响应ipv6,因此观察到了相同的问题陈述。确保curl使用ipv4或您的服务器可以执行ipv6。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接