A validação do certificado de VPN falhou (OpenVPN)? CentOS e Ubuntu

1

Ok, vou explicar o que eu fiz ... e no final é o queston. Obrigado!

Para configurar minha VPN, instalei o OpenVPN em máquinas servidoras e clientes. No servidor eu configurei o cert Authority no arquivo / etc / openvpn / easy-rsa / vars editando estas linhas:

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

então eu gerou o certificado:

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

Criado o cerver certs:

./build-key-server myServer

Parâmetros Diffie Hellman para o servidor

./build-dh

Copos e chaves copiadas / etc / openvpn

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

Certs de cliente criados

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

Copiei este certs para a máquina do cliente e apaguei-os do servidor:

/etc/openvpn/ca.crt

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

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

Editado /etc/openvpn/server.conf para os nomes dos meus arquivos

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

/etc/init.d/openvpn restart

Verificou que o tun0 está lá

ifconfig tun0

Habilitado o parâmetro ip_forward no /etc/sysctl.conf para que os pacotes possam fluir

net.ipv4.ip_forward=1

Também ativado o mascaramento de rede virtual para que o cliente possa acessar todas as máquinas remotas

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

e salvou as tabelas ip conf para que elas não desapareçam em uma reinicialização

Salvar conf no arquivo

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

Edite / etc / network / interfaces adicionando a interface (eth0, neste caso)

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

Obtendo o seguinte 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

No cliente eu instalei o OpenVPN e editei o arquivo client.conf que está em / etc / openvpn com os certificados: ca.cert, client1.key, client1.conf, obtendo o seguinte arquivo 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

depois reiniciado:

/etc/init.d/openvpn restart

E quando eu quero verificar se a interface tun0 está lá com ifconfig tun0, não existe.

Por isso, verifiquei meu log em busca de erros, na máquina do cliente, e há esse erro:

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

e este é o erro no log dos servidores

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

Eu criei as chaves novamente e adicionei o caminho completo dos certs no arquivo client.conf, mas ainda não funciona. Também tentei com todos os meus firewalls desativados e ainda não posso conectar ao meu servidor por causa desse erro.

Another important thing is that my server is an ubuntu 12.04 and client CentOS 6.3

Posso ver que encontro meu servidor, mas a conexão ainda não está completa ...

O que devo fazer ??

Se mais arquivos de configuração forem necessários, diga-me para mostrar a você

    
por AAlvz 15.01.2013 / 20:57

2 respostas

5

Sua mensagem de erro indica que o cliente não gosta do certificado apresentado pelo servidor por qualquer motivo. Envie uma cópia do server.crt para o cliente e execute:

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

Se estiver tudo bem, você deve receber algo parecido com server.crt: OK

Basicamente, você deseja verificar se o server.crt está devidamente assinado pelo arquivo ca.crt no cliente. Você pode jogar com as opções para ver a aparência de uma falha, deixando de fora o -CAfile ca.crt . Neste caso (ou se o ca.crt não assinou o server.crt) você receberá uma mensagem como:

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

Se este for o caso, passe por cima do processo de geração de certificados.

    
por 16.01.2013 / 01:34
0

Eu também tive esse problema. O problema era que eu estava usando o ca.crt que o easyrsa gerava. Isto está errado. Use o cacert.pem em / etc / ssl / misc / demoCA / em vez disso.

    
por 08.04.2017 / 18:11