openssl verify 错误 7 at 1 深度查找:证书签名失败

openssl verify 错误 7 at 1 深度查找:证书签名失败

我已经安装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 图形用户界面几乎有效……

相关内容