![openssl verify 错误 7 at 1 深度查找:证书签名失败](https://linux22.com/image/648188/openssl%20verify%20%E9%94%99%E8%AF%AF%207%20at%201%20%E6%B7%B1%E5%BA%A6%E6%9F%A5%E6%89%BE%EF%BC%9A%E8%AF%81%E4%B9%A6%E7%AD%BE%E5%90%8D%E5%A4%B1%E8%B4%A5.png)
我已经安装OpenVPN服务器CentOS。我有两个客户——第一个是CentOS(全部有效),并尝试连接视窗现在就是客户了。
我使用实用程序生成了客户端证书build-key
。
如果我在服务器端检查-一切似乎都正常:
# openssl verify -CAfile /etc/openvpn/clients/setevoy/ca.crt /etc/openvpn/clients/setevoy/setevoy.crt
/etc/openvpn/clients/setevoy/setevoy.crt: OK
但是 - 当我检查相同的证书时视窗- 收到错误:
$ openssl verify -CAfile ca.crt setevoy.crt
setevoy.crt: /C=UA/ST=CA/L=Kiev/O=Fort-Funston/OU=MyOrganizationalUnit/CN=venti.setevoy.org.ua/name=openvpn_root/[email protected]
error 7 at 1 depth lookup:certificate signature failure
文件在服务器上(我从那里复制文件)和视窗客户端(它们被放置在c/Program Files (x86)/OpenVPN/config
:
# md5sum /etc/openvpn/clients/setevoy/ca.crt
53984cf44daffb708cdb937fa3d30438 /etc/openvpn/clients/setevoy/ca.crt
$ md5sum ca.crt
53984cf44daffb708cdb937fa3d30438 *ca.crt
# md5sum /etc/openvpn/clients/setevoy/setevoy.crt
c818d312e58db514a9a2afae4c687241 /etc/openvpn/clients/setevoy/setevoy.crt
$ md5sum setevoy.crt
c818d312e58db514a9a2afae4c687241 *setevoy.crt
我认为,Windows OpenSSL机制......或者类似的问题:
$ head setevoy.crt | grep Signature
Signature Algorithm: sha256WithRSAEncryption
然后,当我尝试开始时OpenVNP 图形用户界面- 收到错误:
2014 年 12 月 17 日,星期三 11:44:25 TLS_ERROR:BIO 读取 tls_read_plaintext 错误:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 2014 年 12 月 17 日,星期三 11:44:25 TLS 错误:TLS 对象 -> 传入纯文本读取错误 2014 年 12 月 17 日,星期三 11:44:25 TLS 错误:TLS 握手失败
更新型多巴胺
在服务器上:
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
以及视窗客户:
$ openssl.exe version
OpenSSL 0.9.7l 28 Sep 2006
更新 2
我升级了OpenSSL为了OpenVPN 图形用户界面,现在是 1.0.1,并且verify
可以正常工作:
$ ../bin/openssl.exe version
OpenSSL 1.0.1j 15 Oct 2014
$ ../bin/openssl.exe verify -CAfile ca.crt setevoy.crt
setevoy.crt: OK
但是 - 我仍然无法连接,日志中出现相同的错误。
我还安装了新的CentOS服务器,仅用于测试,OpenVPN客户端在那里 - 一切正常。问题视窗仅限客户端。
答案1
OpenSSL 0.9.7 太旧了,不支持 SHA256,因此无法验证您的服务器证书。您必须将客户端 OpenSSL 升级到至少 0.9.8(它不兼容二进制文件,因此可能需要重新编译或获取 OpenVPN 的其他编译),或者更改为使用 SHA1-RSA 签名的服务器证书。
“SHA1 不好”:公共网络上的浏览器和 CA 推动了大多数 SSL/TLS 的使用,它们正在强制淘汰 SHA1 签名的证书,因为它们很快就会受到碰撞攻击。但 VPN (通常)是一种受控的情况,您运行 CA,并且只有少量客户端,并且您事先知道这些客户端;那么您不必担心碰撞攻击,SHA1 也足够安全 - 只要您不受某些法规或政策的约束,这些法规或政策只是禁止 SHA1 处于安全状态,并且您无法获得豁免。
如何?我不知道 OpenVPN/easy-rsa 在哪里设置 OpenSSL 用于证书签名的参数(它可能在 CONF 文件中或在命令行中,无论哪种方式都可以使用环境变量);标记社区,以便任何人都可以轻松提供帮助。如果没有人这样做,并且您指出特定的版本或下载,我可以看看。
PS-如果您专门标记 openvpn 而不是 vpn,可能会有所帮助。
答案2
问题是由Windows OpenSSL,它无法与sha256
算法一起工作。
解决方案,我发现 - 编辑配置文件/etc/openvpn/easy-rsa/openssl-1.0.0.cnf
(或其他,取决于OpenSSL版本),并设置:
default_md = md5
代替
default_md = sha256
然后重新生成所有服务器和客户端的证书和密钥(包括霍夫曼密钥)。
在这之后 -OpenVPN 图形用户界面几乎有效……