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

Ale*_*xei 23 openvpn linux-mint

Linux 薄荷 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
Run Code Online (Sandbox Code Playgroud)

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

sudo openvpn Leo.ovpn 
Run Code Online (Sandbox Code Playgroud)

但出现错误:

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

...

Анд*_*ьев 27

Ubuntu 22.04.1 LTS

就像上面说的,添加这个

tls-cipher "DEFAULT:@SECLEVEL=0"
Run Code Online (Sandbox Code Playgroud)

到你的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
Run Code Online (Sandbox Code Playgroud)

关于 NetworkManager 的更新

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

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

进入[vpn]部分

并重新启动sudo systemctl restart NetworkManager

  • 如果您需要为 NetworkManager 管理的一个特定连接进行设置:配置文件位于“/etc/NetworkManager/system-connections/”,NetworkManager 特定语法为“tls-cipher=DEFAULT:@SECLEVEL=0” 。 (3认同)

mta*_*tak 14

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

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

有一个解决方法可以通过将以下内容添加到您的openssl.cnf

tls-cipher "DEFAULT:@SECLEVEL=0"
Run Code Online (Sandbox Code Playgroud)

自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允许加载旧提供程序以重新启用这些算法。

  • 这个“tls-cipher“DEFAULT:@SECLEVEL=0””没有帮助 (2认同)