Utg*_*rda 4 networking linux vpn openvpn ssl
在 Arch Linux 上更新到 OpenVPN v2.4.7 和 OpenSSL 1.1.1c 后,我无法连接到之前使用的服务器:
\n\n\xe2\x9e\x9c untangle-vpn sudo openvpn --verb 11 --config ./config.ovpn\nFri Jun 7 21:46:11 2019 OpenVPN 2.4.7 [git:makepkg/2b8aec62d5db2c17+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 19 2019\nFri Jun 7 21:46:11 2019 library versions: OpenSSL 1.1.1c 28 May 2019, LZO 2.10\nFri Jun 7 21:46:11 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]XX.XXX.XXX.XXX:XXXX\nFri Jun 7 21:46:11 2019 UDP link local: (not bound)\nFri Jun 7 21:46:11 2019 UDP link remote: [AF_INET]XX.XXX.XXX.XXX:XXXX\nFri Jun 7 21:46:11 2019 Certificate does not have key usage extension\nFri Jun 7 21:46:11 2019 OpenSSL: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed\nFri Jun 7 21:46:11 2019 TLS_ERROR: BIO read tls_read_plaintext error\nFri Jun 7 21:46:11 2019 TLS Error: TLS object -> incoming plaintext read error\nFri Jun 7 21:46:11 2019 TLS Error: TLS handshake failed\n
Run Code Online (Sandbox Code Playgroud)\n\n运行我们 VPN 服务器的人似乎不太可能很快重新颁发带有密钥使用扩展的证书。
\n\n我可以以某种方式跳过密钥使用扩展检查吗?
\n\n我当前的配置:
\n\n\xe2\x9e\x9c untangle-vpn head -n 15 ./config.ovpn\nclient\nresolv-retry 20\nkeepalive 10 60\nnobind\nmute-replay-warnings\nremote-cert-tls server\ncomp-lzo\nverb 1\npersist-key\npersist-tun\nexplicit-exit-notify 1\ndev tun\nproto udp\nport 1194\ncipher AES-128-CBC\n
Run Code Online (Sandbox Code Playgroud)\n
我意识到,在作者的问题下发布以下评论后,提供使用正确的 EKU 正确生成服务器和客户端证书所需的代码可能会有所帮助。
删除 EKU 要求总体来说是一个坏主意,并且会破坏 VPN 的安全性 -在任何情况下都不建议这样做。如果“运行我们 VPN 服务器的人”是第三方,请寻找其他供应商,因为他们显然不明白自己在做什么。如果这些人在您的公司中,请直接与他们联系以正确配置 VPN 服务器,因为他们也不明白自己在做什么。相关 EKU 可防止 MITM 攻击。请参阅此答案中的 ExtendedKeyUsage 部分以了解 EKU 定义
我在此答案openssl.cnf
中更深入地
介绍了 V3 配置文件、KU 和 EKU
VPN 服务器:
[ v3_vpn_server ]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth
subjectAltName = @alt_vpn_server
Run Code Online (Sandbox Code Playgroud)
keyUsage
:
nonRepudiation
:防止签名实体错误地拒绝某些操作digitalSignature
:用于实体和数据源的完整性验证keyEncipherment
:用于加密对称密钥,然后传输到目标keyAgreement
:允许使用密钥协商来与目标建立对称密钥extendedKeuUsage
:
serverAuth
:服务器身份验证,区分服务器客户端根据digitalSignature
,keyEncipherment
或keyAgreement
VPN 客户端:
[ v3_vpn_client ]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = critical, clientAuth
subjectAltName = @alt_vpn_client
Run Code Online (Sandbox Code Playgroud)
extendedKeuUsage
:
clientAuth
:客户端身份验证,将客户端区分为仅客户端 digitalSignature
和/或keyAgreement
是的,删除该remote-cert-tls server
选项。
(或者,如果您仍想检查“扩展密钥用法”扩展,而不是“密钥用法”,请将该选项替换remote-cert-eku "TLS Web Server Authentication"
为 openvpn 手册页中所示的内容。)
--remote-cert-tls client|server
Require that peer certificate was signed with an explicit key usage and
extended key usage based on RFC3280 TLS rules.
[...]
The --remote-cert-tls server option is equivalent to --remote-cert-ku
--remote-cert-eku "TLS Web Server Authentication"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24786 次 |
最近记录: |