VPN证书validation失败(OpenVPN)? CentOS和Ubuntu

好吧,我会解释我做了什么…最后是任务。 谢谢!

为了build立我的VPN,我在服务器和客户端机器上安装了OpenVPN。 在服务器上,我将cert Authorityconfiguration在文件/ etc / openvpn / easy-rsa / vars中,编辑以下行:

export KEY_COUNTRY=”ES” export KEY_PROVINCE=”M” export KEY_CITY=”Madrid” export KEY_ORG=”My Organization” export KEY_EMAIL=”[email protected] 

然后我生成的证书

cd / etc / openvpn / easy-rsa / ln -s openssl-1.0.0.cnf openssl.cnf source vars ./clean-all ./build-ca

创build了cerver certs:

./build-key-server myServer

Diffie Hellman参数到服务器

./build-dh

复制的证书和密钥/ etc / openvpn

cd keys / cp myServer.crt myServer.key ca.crt dh1024.pem / etc / openvpn /

创build客户端证书

cd / etc / openvpn / easy-rsa / source vars ./build-key client1

将这个证书复制到客户端机器并从服务器中删除它们:

/etc/openvpn/ca.crt

/etc/openvpn/easy-rsa/keys/cliente.crt

/etc/openvpn/easy-rsa/keys/cliente.key

编辑/etc/openvpn/server.conf到我的文件名

 ca ca.crt cert myServer.crt key myServer.key dh dh1024.pem 

/etc/init.d/openvpn重新启动

validationtun0在那里

ifconfig tun0

启用/etc/sysctl.conf中的ip_forward参数,以便包可能会stream动

把net.ipv4.ip_forward = 1

还启用虚拟networking掩码,以便客户端可以访问所有的远程机器

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

并保存IP表conf,所以他们不会消失在重新启动

将conf保存到文件中

sudo sh -c“iptables-save> /etc/iptables.rules”

编辑/ etc / network / interfaces添加接口(这里是eth0)

pre-up iptables-restore </etc/iptables.rules

获取以下server.conf

 port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb3 

在客户端,我安装了OpenVPN并编辑了与/etc/openvpn中的cert.ca.cert,client1.key,client1.conf文件获取以下client.conf文件中的client.conf文件:

 client dev tun proto udp remote xxx.xxx.xxx.xxx 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key ns-cert-type server comp-lzo verb 3 

然后重新启动:

/etc/init.d/openvpn重新启动

而当我想validation接口tun0是否存在与ifconfig tun0,没有。

所以我检查我的日志中的错误,在客户端机器,并有这样的错误:

 VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=Es/ST=M/L=Madrid/O=xxx/OU=xxx/CN=myServer/name=xxx/[email protected] TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed user openvpn[7984]: TLS Error: TLS object -> incoming plaintext read error user openvpn[7984]: TLS Error: TLS handshake failed 

这是服务器日志中的错误

 xxx.xxx.xxx.xxx:59439 SIGUSR1[soft,tls-error] received, client-instance restarting MULTI: multi_create_instance called xxx.xxx.xxx.xxx:59485 Re-using SSL/TLS context xxx.xxx.xxx.xxx:59485 LZO compression initialized xxx.xxx.xxx.xxx:59485 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] xxx.xxx.xxx.xxx:59485 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] xxx.xxx.xxx.xxx:59485 Local Options hash (VER=V4): '530fdded' xxx.xxx.xxx.xxx:59485 Expected Remote Options hash (VER=V4): '41690919' xxx.xxx.xxx.xxx:59485 TLS: Initial packet from [AF_INET]xxx.xxx.xxx.xxx:59485, sid=0349f4d6 657535c9 xxx.xxx.xxx.xxx:59440 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) xxx.xxx.xxx.xxx:59440 TLS Error: TLS handshake failed xxx.xxx.xxx.xxx:59440 SIGUSR1[soft,tls-error] received, client-instance restarting 

我再次创build了密钥,并在client.conf文件中添加了证书的完整path,但仍然无效。 也尝试了所有我的防火墙禁用,仍然无法连接到我的服务器,因为这个错误。

另一个重要的是我的服务器是Ubuntu 12.04和客户端CentOS 6.3

我可以看到,我发现我的服务器,但仍然没有完成连接…

我该怎么办??

如果需要更多的configuration文件,告诉我给你看

您的错误消息表明客户端不pipe出于什么原因都不喜欢服务器提供的证书。 将server.crt的副本发送到客户端,然后运行:

 openssl verify -purpose any -CAfile ca.crt server.crt 

如果没关系,你应该得到一些类似于server.crt: OK东西server.crt: OK

基本上,你想检查server.crt是否被客户端上的ca.crt文件正确地签名。 您可以使用这些选项来查看失败的样子,通过删除-CAfile ca.crt 。 在这种情况下(或者如果ca.crt没有签署server.crt),你会得到如下信息:

 error 20 at 0 depth lookup:unable to get local issuer certificate 

如果是这种情况,请检查您的证书生成过程。

我也有这个问题。 问题是我正在使用easyrsa生成的ca.crt。 这是错误的。 在/ etc / ssl / misc / demoCA /中使用cacert.pem。