且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Centos7连接OPENVPN出错

更新时间:2022-06-17 11:11:25

最近搞openvpn 在阿里云windows server 2008上面搭建的openvpn服务器(本来想在linux上做的没办法领导要求)。

我用本地虚拟机测试连接openvpn没有任何问题 Centos 6.5 和windows 7 都可以连接Openvpn。
唯独Centos 7 不行出现如下报错!这个问题解决了一天的时间百度Google了各大计算机技术交流论坛和it技术QQ群都解决不了!

具体错误如下:
d Feb 24 17:08:08 2016 VERIFY ERROR: depth=0, error=certificate signature failure: C=US, ST=CA, L=SanFrancisco, O=OpenVPN, OU=changeme, CN=changeme, name=changeme, emailAddress=mail@host.domain
Wed Feb 24 17:08:08 2016 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Wed Feb 24 17:08:08 2016 TLS Error: TLS object -> incoming plaintext read error
Wed Feb 24 17:08:08 2016 TLS Error: TLS handshake failed
Wed Feb 24 17:08:08 2016 Fatal TLS error (check_tls_errors_co), restarting
Wed Feb 24 17:08:08 2016 SIGUSR1[soft,tls-error] received, process restarting
Wed Feb 24 17:08:13 2016 Attempting to establish TCP connection with [AF_INET] [nonblock]
Wed Feb 24 17:08:14 2016 TCP connection established with [AF_INET]
Wed Feb 24 17:08:14 2016 TCPv4_CLIENT link local: [undef]
Wed Feb 24 17:08:14 2016 TCPv4_CLIENT link remote: [AF_INET]
Wed Feb 24 17:08:14 2016 VERIFY ERROR: depth=0, error=certificate signature failure: C=US, ST=CA, L=SanFrancisco, O=OpenVPN, OU=changeme, CN=changeme, name=changeme, emailAddress=mail@host.domain
Wed Feb 24 17:08:14 2016 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

上网查很多人说是时间不同步我同步服务器的时间也没有解决问题!后来才发现问题所在
主要原因是Centos 7移除了Openssl的MD5支持
openssl仍然默认以md5作为散列算法并且可以正确识别md5散列算法,所以就悲剧了,只有cenots7不好用。关键是这个错误是大错误被小错误还掩盖了一下,所以很难被发现。

解决方法:

[root@localhost openvpn]# export NSS_HASH_ALG_SUPPORT=+MD5
[root@localhost openvpn]# export OPENSSL_ENABLE_MD5_VERIFY=1
编辑 vim /usr/lib/systemd/system/NetworkManager.service
添加Environment="OPENSSL_ENABLE_MD5_VERIFY=1 NSS_HASH_ALG_SUPPORT=+MD5"

保存退出后

[root@localhost openvpn]# systemctl daemon-reload
[root@localhost openvpn]# systemctl restart NetworkManager.service
wKiom1bNdYnDyGMGAAB1KOfvEw8314.png
成功连接openvpn,检查路由和ip地址配置一切正常!