У меня есть следующий 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
И следующий конфиг клиента:
# 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
Эти конфигурации работают нормально, но если я хочу использовать 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]x.x.x.x:1194
Thu May 24 22:30:16 2012 TLS: Initial packet from [AF_INET]x.x.x.x: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/emailAddress=hostmaster@visser.eu
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)
Я проверил сертификаты по ca.crt, и как server.crt, так и michaelc.crt являются действительными сертификатами, подписанными с помощью ca.crt.
Кроме того, поскольку они работают по TCP, я предполагаю, что сертификаты абсолютно действительны. Я могу представить, что соединение плохое (хотя это DSL на одном конце и бизнес-волокно на другом), но поправимо ли это? Я также попытался создать новые сертификаты (как CA, так и сервер и клиент), но это дает ту же ошибку. Я надеюсь, что кто-нибудь может мне подсказать.
К счастью, я разобрался в проблеме, но, к сожалению, это была моя собственная ошибка. Некоторое время назад я тестировал VPN через UDP на другом сервере, и поэтому UDP-соединения через порт 1194 были перенаправлены на другой сервер. На другом сервере все еще был запущен OpenVPN с очень похожим сертификатом. На самом деле ошибка была правильной и была вызвана подключением к другому серверу при подключении с использованием UDP. Хотя я чувствую себя глупо из-за этой ошибки, я рад, что действительно понял, что пошло не так.