【问题标题】:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议
【发布时间】:2014-02-03 19:35:57
【问题描述】:

我目前正在尝试测试已实现的更改,以在 Cloudera Hadoop 环境中使用 Encrypted 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

当我检查 open ssl 客户端时,我得到了以下响应

 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

【问题讨论】:

    标签: java ssl hadoop openssl cloudera


    【解决方案1】:

    错误: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 地址。为什么?我不知道。但你的回答给了我最后的暗示:没有人在听他们。所以这里没有匹配。
    【解决方案2】:

    致任何有此问题的人:

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

    我的问题是 curl 默认使用 ipv6 而不是 ipv4。未正确配置终端服务器以响应 ipv6,因此观察到相同的问题陈述。确保 curl 使用的是 ipv4,否则您的服务器可以使用 ipv6。

    【讨论】:

      【解决方案3】:

      我在 https 上运行 Airflow 网络服务器服务时遇到了这种错误。我错误地提到了属性(密钥)文件中的 .key 文件路径而不是 .pem 文件路径来启用 https。

      更正了 .pem 文件路径而不是 .key 文件路径并且工作正常。

      【讨论】:

        猜你喜欢
        • 2019-03-12
        • 1970-01-01
        • 2015-11-29
        • 2014-08-05
        • 1970-01-01
        • 2016-01-11
        • 2023-03-31
        • 2014-04-22
        • 1970-01-01
        相关资源
        最近更新 更多