我的华硕路由器刷入了 MerlinWRT。此配置曾经有效,但是现在当我连接时,我得到,
$ sudo openvpn ./client1.ovpn
OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Apr 13 2015
UDPv4 link local: [undef]
UDPv4 link remote: [AF_INET]75.108.194.127:1194
TLS_ERROR: BIO read tls_read_plaintext error: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
TLS Error: TLS object -> incoming plaintext read error
TLS Error: TLS handshake failed
我该如何解决,“SSL3_CHECK_CERT_AND_ALGORITHM:dh 密钥太小”使用 MerlinWRT。
答案1
可以在此处找到详细说明此错误的线程。你可以看到 RMerlin(作者)本人对此进行了阐述。
RMerlin 给出了解决这个问题的解决方案
与此同时,正如我所说,只需生成一个新的 DH,并将其粘贴到路由器的 DH 字段中即可替换它。您使用的 OpenSSL 版本并不重要,您不需要较新的版本来执行此操作。
以及生成密钥的代码..
openssl dhparam -out dh.pem 1024
cat dh.pem
根据 RMerlin 的说法,这个问题将会被修复。
378.55 发布后,至少要过几周才能发布,因为当前的华硕 GPL 代码存在许多问题。
对于某些背景,此错误不在 MerlinWRT 的代码中,而是对客户端 OpenSSL 库,
作为一项安全改进,此更新还修改了 OpenSSL 行为,以拒绝低于 768 位的 DH 密钥大小,从而防止可能的降级攻击。
尽管有趣的是,根据“为 TLS 部署 Diffie-Hellman 指南”您可能需要考虑 2048 位或更强的。
答案2
只是一个小花絮。我知道这是一个 Linux 站点,但在使用 的过程中我也遇到了这个问题Windows
,尽管我生成的密钥是2048bit
。不确定它是否相同,但openvpn-install-2.3.7-I601-x86_64
不会产生错误,而openvpn-install-2.3.7-I602-x86_64
会产生错误。旧版本有效。我卸载了新的,安装了旧的,然后又启动并运行了。也许有一个回归导致了它?
错误信息与OP所说的完全相同。我可以建议在您的个人系统上尝试旧版本的客户端吗?
该服务器正在Asus RT-AC87u
运行Asuswrt-Merlin
固件378.51
。