我正在尝试通过openvpn连接到我们的研究所VPN。当openvpn运行时,我从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时不会出现此错误。
在这些版本之间,发生此错误有什么变化?
我的系统是Debian Sid。由于我经常使用VPN,因此每次升级后都必须手动将OpenSSL降级到1.1.0h时,这非常烦人。同样,我可以使用openVPN进行连接。
答案 0 :(得分:12)
您不必降级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。
答案 1 :(得分:8)
您不必降级OpenSSL 或更改系统默认值。
您无需配置/etc/ssl/openssl.cnf,而只需配置openvpn
客户端以不同的最低协议版本配置libssl。选项
是--tls-version-min
或tls-version-min
在配置文件中。
仍然最好升级服务器,但这是处理临时版本偏斜的更好方法。
答案 2 :(得分:0)
您甚至可以直接覆盖系统默认值,例如通过使用:
tls-cipher "DEFAULT:@SECLEVEL=1"
具有与常规OpenSSL默认值匹配的基本配置。请注意,OpenVPN通常会设置更为严格的密码列表(请参见手册页)。