OpenVPN失败通过udp的自签名证书,通过tcp工作

我有以下server.conf:

# OpenVPN 2.x config proto tcp port 1194 dev tun-vpn dev-type tun server 10.8.0.0 255.255.0.0 push "route 172.16.0.0 255.255.0.0" push "dhcp-option DOMAIN mydom.com" push "dhcp-option DNS 172.16.1.1" # Certificates ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key tls-server # Diffie hellman parameters dh /etc/openvpn/easy-rsa/keys/dh1024.pem # Connection settings comp-lzo ping 10 ping-restart 120 # Server security persist-key persist-tun user nobody group nogroup # Logging status openvpn-status.log verb 4 mute 10 

和下面的客户端configuration:

 # OpenVPN 2.x client config client dev tun proto tcp remote vpn.mydom.com 1194 resolv-retry infinite nobind persist-key persist-tun mute-replay-warnings ca ca.crt cert michaelc.crt key michaelc.key #ns-cert-type server comp-lzo ping 10 ping-restart 60 verb 3 

这些configuration工作正常,但如果我想使用UDP而不是TCP,我得到以下日志:

 Thu May 24 22:30:16 2012 UDPv4 link local: [undef] Thu May 24 22:30:16 2012 UDPv4 link remote: [AF_INET]xxxx:1194 Thu May 24 22:30:16 2012 TLS: Initial packet from [AF_INET]xxxx:1194, sid=e63bd705 392de807 Thu May 24 22:30:16 2012 VERIFY ERROR: depth=1, error=self signed certificate in certificate chain: /C=NL/ST=Zuid_Holland/L=_s-Gravendeel/O=Visser__s-Gravendeel_Holding_B.V./CN=Visser__s-Gravendeel_Holding_B.V._CA/[email protected] Thu May 24 22:30:16 2012 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Thu May 24 22:30:16 2012 TLS Error: TLS object -> incoming plaintext read error Thu May 24 22:30:16 2012 TLS Error: TLS handshake failed Thu May 24 22:30:16 2012 TCP/UDP: Closing socket Thu May 24 22:30:16 2012 SIGUSR1[soft,tls-error] received, process restarting Thu May 24 22:30:16 2012 Restart pause, 2 second(s) 

我已经validation了ca.crt的证书,server.crt和michaelc.crt都是使用ca.crt签名的有效证书。

另外,因为他们通过TCP工作,我的假设是证书是完全有效的。 我可以想象这个连接是坏的(虽然它的一端是DSL,另一端是业务光纤),但这是可以修复的吗? 我也尝试生成新的证书(CA,服务器和客户端),但是给出了完全相同的错误。 我希望有人能给我任何提示。

幸运的是我发现了这个问题,不幸的是这是我自己的错误。 不久前,我在另一台服务器上testing了通过UDP的VPN,因此将端口1194上的UDP连接redirect到其他服务器。 另一台服务器仍然运行OpenVPN,有一个非常相似的证书。 所以实际上,这个错误是正确的,并且是在使用UDP连接时连接到不同的服务器造成的。 虽然我觉得犯这个错误是愚蠢的,但是我真的很高兴我真的知道出了什么问题。