TLS 握手失败错误 w/ OpenSSL 1.1.x

TLS Handshake failed error w/ OpenSSL 1.1.x

我正在尝试通过 VncViewer (TigerVnc) 连接 x11vnc 服务器。我给出以下命令以使用 -ssl 选项

启动 vnc 服务器
$ x11vnc -ssl -rfbauth /home/root/.vnc/passwd 

当我尝试连接 vnc 服务器时,出现 TLS 握手失败 错误。

以下为vncserver日志

07/05/2020 13:25:58 SSL: accept_openssl(OPENSSL_VNC)
07/05/2020 13:25:58 SSL: spawning helper process to handle: 172.21.33.47:64181
07/05/2020 13:25:58 SSL: helper for peerport 64181 is pid 629: 
07/05/2020 13:25:58 connect_tcp: trying:   127.0.0.1 20000
07/05/2020 13:25:59 check_vnc_tls_mode: waited: 1.422183 / 1.40 input: (future) RFB Handshake
07/05/2020 13:26:00 check_vnc_tls_mode: version: 3.8
07/05/2020 13:26:00 check_vnc_tls_mode: reply: 19 (VeNCrypt)
07/05/2020 13:26:00 vencrypt: received 0.2 client version.
07/05/2020 13:26:00 vencrypt: client selected sub-type: 257 (rfbVencryptTlsNone)
07/05/2020 13:26:00 Using Anonymous Diffie-Hellman mode.
07/05/2020 13:26:00 WARNING: Anonymous Diffie-Hellman uses encryption but is
07/05/2020 13:26:00 WARNING: susceptible to a Man-In-The-Middle attack.
07/05/2020 13:26:00 loaded Diffie Hellman 1024 bits, 0.001s
07/05/2020 13:26:00 SSL: ssl_init[629]: 6/6 initialization timeout: 20 secs.
07/05/2020 13:26:01 SSL: ssl_helper[629]: SSL_accept() *FATAL: -1 SSL FAILED
07/05/2020 13:26:01 SSL: error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher
07/05/2020 13:26:01 SSL: ssl_helper[629]: Proto: unknown
07/05/2020 13:26:01 SSL: accept_openssl: cookie from ssl_helper[629] FAILED. 0

这一切正常,没有错误。唯一的变化是 openssl 版本,它从 2018 年 8 月 14 日的 OpenSSL 1.0.2p 更改为 2019 年 9 月 10 日的 OpenSSL 1.1.1d。

我检查过 OpenSSL 1.1.1d 支持 TLSv1.3 & TigerVNC 支持 TLSv1.2,错误是因为 SSL 版本不匹配吗?

我找到了问题的解决方案

07/05/2020 13:26:01 SSL: error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher

这意味着,客户端和服务器未能找到它们都支持的一组通用密码套件。

07/05/2020 13:26:00 Using Anonymous Diffie-Hellman mode.

07/05/2020 13:26:00 WARNING: Anonymous Diffie-Hellman uses encryption but is

07/05/2020 13:26:00 WARNING: susceptible to a Man-In-The-Middle attack.

这表明我在 x11vnc 服务器中使用基于 ADH 的密码套件,这在 1.1.1 的默认安全级别中不可用。 1.0.2 中不是这种情况。

此问题的解决方案是降低使用中的安全级别,以免抱怨使用 ADH。

我将 x11vnc 服务器的安全级别从 ADH:@STRENGHT 降低到 ADH:@SECLEVEL=0 并且成功了。