问题
在将OpenVPN所在的服务器系统从Debian 11升级到Debian 12后,openvpn服务无法正常启动了,查看日志,报告dh key too small
,这该如何处理?
尝试
降低全局openssl安全配置
印象中之前升级到 Debian 11时也出现过类似的问题,当时将openssl的配置文件中的信任级别调低即可,因此首先尝试这种方法。在/etc/ssl/openssl.cnf
中增加如下配置
1 2 3 4 |
[system_default_sect] MinProtocol = TLSv1.2 CipherString = DEFAULT:@SECLEVEL=1 |
修改后发现dh key too small
解决了,但是又卡在了下一个问题上
1 2 |
OpenSSL: error:0A00018E:SSL routines::ca md too weak |
再次降低全局openssl安全配置
我们把安全配置要求降低到0如何?
1 2 3 4 |
[system_default_sect] MinProtocol = TLSv1.2 CipherString = DEFAULT:@SECLEVEL=1 |
修改后发现问题依旧
调整openvpn配置文件
经过搜索,发现此问题也有别人报告,他们采取了如下的方案,在openvpn的配置文件中增加如下一行
1 2 |
tls-cipher "DEFAULT:@SECLEVEL=0" |
然后尝试重启openvpn服务,服务就正常运行了。
最终方案
为了兼顾可用性和安全性,达成以下目的
- 不破坏全局的Openssl安全配置
- 确保openvpn可以正常启动
- 不调整已经分发的openvpn配置
使用以下方案进行配置
- 使用环境变量为openvpn指定特定的openssl配置文件
- 修改openvpn配置文件
即,拷贝原始openssl.cnf到/etc/ssl/openssl-old.cnf
,再修改CipherString = DEFAULT:@SECLEVEL=1
解决dh key too small
问题。
我使用supervisor来启动openvpn服务,配置文件如下,添加环境变量配置节
1 2 3 4 5 6 7 8 |
[program:openvpn-server] environment=OPENSSL_CONF=/etc/ssl/openssl-old.cnf command=/usr/sbin/openvpn --config /etc/openvpn/server.conf directory=/etc/openvpn priority=7 autostart=true autorestart=true |
然后添加/etc/openvpn/server.ovpn的配置文件
1 2 |
tls-cipher "DEFAULT:@SECLEVEL=0" |
重启openvpn服务后问题解决