如何管理错误 "OpenSSL v1.1.1 ssl_choose_client_version unsupported protocol"?

How do I manage the error "OpenSSL v1.1.1 ssl_choose_client_version unsupported protocol"?

尝试通过 openvpn 连接到 VPN 时,我从 openssl

收到以下错误
Tue Oct 30 11:34:16 2018 WARNING: --ns-cert-type is DEPRECATED.  Use --remote-cert-tls instead.
... several more lines
Tue Oct 30 11:34:17 2018 OpenSSL: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
Tue Oct 30 11:34:17 2018 TLS_ERROR: BIO read tls_read_plaintext error
Tue Oct 30 11:34:17 2018 TLS Error: TLS object -> incoming plaintext read error
Tue Oct 30 11:34:17 2018 TLS Error: TLS handshake failed
Tue Oct 30 11:34:17 2018 SIGUSR1[soft,tls-error] received, process restarting
Tue Oct 30 11:34:17 2018 Restart pause, 5 second(s)

使用 OpenSSL 1.1.0h 时不会出现此错误。

OS:Debian Sid

您不必降级 OpenSSL。

在 Debian 中引入 openssl 1.1.1 版后,默认设置为更安全的值。这是在 /etc/ssl/openssl.cnf 配置文件中完成的。在文件末尾有:

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

Debian 现在至少需要 TLS 1.2 版本而不是 TLS 1.0。如果对方不支持 TLS 1.2 或更高版本,您将遇到一些连接错误。

我建议将服务器上的 openvpn 升级到支持 TLS 1.2 的较新版本。

第二个选项(不太安全)是将 MinProcotol 修改为 TLSv1 或 TLSv1.1。

您不必降级 OpenSSL 更改系统默认设置。

无需修改 /etc/ssl/openssl.cnf,您只需配置 openvpn 客户端使用不同的最低协议版本配置 libssl。选项 在配置文件中是 --tls-version-mintls-version-min

升级服务器仍然更可取,但这是处理临时版本偏差的更好方法。

您甚至可以直接覆盖系统默认设置,例如通过使用:

tls-cipher "DEFAULT:@SECLEVEL=1"

拥有与普通 OpenSSL 默认值相匹配的基本配置。请注意,OpenVPN 通常会设置更受限制的密码列表(请参阅手册页)。