OpenSSL:错误:0A00018E:SSL 例程::ca md 太弱

OpenSSL:错误:0A00018E:SSL 例程::ca md 太弱

Linux Mint 21

成功安装 openvpn。

OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 22 2022



openssl version -a
OpenSSL 1.1.1q  5 Jul 2022
built on: Mon Aug 15 08:08:28 2022 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib/engines-1.1"
Seeding source: os-specific

现在想通过 openvpn 连接到远程设置。

sudo openvpn Leo.ovpn 

但出现错误:

2022-08-15 09:29:10 WARNING: Compression for receiving enabled. Compression has been used in the past to break encryption. Sent packets are not compressed unless "allow-compression yes" is also set.
2022-08-15 09:29:10 --cipher is not set. Previous OpenVPN version defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers.
2022-08-15 09:29:10 WARNING: file 'client.key' is group or others accessible
2022-08-15 09:29:10 OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 22 2022
2022-08-15 09:29:10 library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10
2022-08-15 09:29:10 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
2022-08-15 09:29:10 OpenSSL: error:0A00018E:SSL routines::ca md too weak
2022-08-15 09:29:10 Cannot load certificate file client.crt
2022-08-15 09:29:10 Exiting due to fatal error

PS 我检查了文件夹。存在文件:client.crt 和 ca.crt

sudo openssl x509 -text -in ca.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            d5:a0:93:fa:24:35:4d:95

...

答案1

Ubuntu 22.04.1 LTS

如上所述,添加此

tls-cipher "DEFAULT:@SECLEVEL=0"

你的vpn 客户端配置(不是 openssl.cnf),我的看起来像这样(示例):

client
tls-client
ca vpnname/ca.crt
cert vpnname/user.crt
key vpnname/user.key
tls-crypt vpnname/myvpn.tlsauth
proto udp
remote 1.1.1.1 1194 udp
dev tun
topology subnet
pull
user nobody
group nogroup
script-security 2
tls-cipher "DEFAULT:@SECLEVEL=0"
#up /etc/openvpn/vpnname/up.sh
#down /etc/openvpn/vpnname/down.sh

关于 NetworkManager 的更新

正如人们在评论中所说,对于 NetworkManager openvpn 你需要添加tls-cipher=DEFAULT:@SECLEVEL=0

在你的/etc/NetworkManager/system-connections/name-of-your-openvpn.nmconnection

进入[vpn]部分

并重新启动sudo systemctl restart NetworkManager

答案2

答案就在错误消息中(error:0A00018E:SSL routines::ca md too weak)。OpenSSL 拒绝使用 CA 证书,因为某些参数现在被认为是不安全的。这可能是由于证书使用 MD5 或 SHA1 进行签名造成的。

您应该使用安全哈希算法为签名重新生成 CA 和证书,因为您当前使用的哈希算法不再被视为安全。

有一种解决方法是将以下内容添加到您的openssl.cnf

tls-cipher "DEFAULT:@SECLEVEL=0"

另一种解决方法是OpenVPN 2.6.0

OpenSSL 3.0 支持

已添加 OpenSSL 3.0。OpenSSL 3.0 的大多数更改对用户不可见,但可提高与 OpenSSL 3.0 的总体兼容性。--tls-cert-profile insecure已添加以允许选择最低的 OpenSSL 安全级别(不推荐,仅在必须时使用)。OpenSSL 3.0 默认不再支持 Blowfish(和其他已弃用的)算法,新选项--providers允许加载旧版提供程序以重新启用这些算法。

答案3

鉴于:

Linux Mint 21
OpenVPN 2.5.5 , Mar 22 2022
OpenSSL 3.0.2 , 15 Mar 2022

我修复了这个问题:

我安装了 openvpn ver. 2.4.7,现在没有错误。

OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Aug 15 2022
library versions: OpenSSL 1.1.1q  5 Jul 2022, LZO 2.10

OpenSSL 1.1.1q  5 Jul 2022

答案4

文章中描述了这个问题 Ubuntu 22.04 OpenSSL 错误修复

Ubuntu 和 Xubuntu 22.04 已迁移至 OpenSSL 3.0。这会导致 Wifi 和其他互联网连接出现错误(0A00018E:SSL 例程::ca md 太弱)。这是因为 OpenSSL 3.0 认为旧 CA 证书上使用的 MD5 和 SHA1 哈希算法无效。

虽然本文针对的是 Ubuntu,但它可能也适用于最新的 Linux Mint。

本文提出如下解决方案:

解决方案 1:如果您正在使用 Wi-Fi 或 VPN 并收到错误,那么立即的解决方案是更新您的密钥对以与 OpenSSL 3 兼容。这是因为 Ubuntu 22.04 中默认使用的 OpenSSL 3 不接受 SHA1 算法。了解有关 OpenSSL 3.0 的更多信息。

解决方案 2:安装 OpenSSL 3。这是有关如何在 Ubuntu 22.04 上安装 OpenSSL 3 的指南。

解决方案 3:如果您遇到 SSH 问题,请确保您已选择性地启用它,因为它在 OpenSSH 中默认是禁用的。

笔记:使用 libssl1.1 的第三方软件包也需要升级到 libssl3。

相关内容