OpenVPN: certificado autoassinado em cadeia

9

Eu estou tentando muito sem sucesso usar TunnelBlick (um cliente OS / X OpenVPN 2.2.1 que é bem conhecido) para conectar usando certificados. Aqui está a mensagem de erro (sanitizada) que recebo:

2012-01-11 11:18:26 TLS: Initial packet from **.**.**.**:1194, sid=17a4a801 5012e004
2012-01-11 11:18:26 VERIFY ERROR: depth=1, error=self signed certificate in certificate chain: /C=US/ST=**/L=**/O=**/CN=**/emailAddress=**
2012-01-11 11:18:26 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2012-01-11 11:18:26 TLS Error: TLS object -> incoming plaintext read error
2012-01-11 11:18:26 TLS Error: TLS handshake failed
2012-01-11 11:18:26 TCP/UDP: Closing socket

Agora, aqui está o problema. Gerei um CSR eu mesmo para solicitar este certificado, usando o arquivo ca.crt fornecido pelo outro lado (na verdade, eles fizeram isso duas vezes apenas para ter certeza) .

As entradas relevantes na configuração do cliente são:

ca   ca.crt
cert my.crt
key  my.key

e, além disso ... posso verificar as chaves desta forma:

openssl verify -CAfile ca.crt my.crt 
my.crt: OK

Ok, então agora eu estou completamente confuso e perplexo. Neste ponto, sei que o CSR e a chave foram gerados usando o CSR adequado. Na verdade, aqui está o mesmo comando que fez isso:

openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key

Eu também sabia fazer isso:

openssl x509 -subject -issuer -noout -in ca.crt

...

(pisca!)

Acabei de encontrar ?

A saída desse comando se parece com isso: (editado de alguma forma)

subject= /C=US/ST=VA/L=**/O=**/CN=** CA/emailAddress=**
issuer= (the same)

Considerando que na mensagem de erro do OpenVPN, o ST = não é exatamente o mesmo:

VERIFY ERROR: depth=1, error=self signed certificate in certificate chain: /C=US/ST=Virginia/L=**/O=**/CN=**/emailAddress=**

"VA" não é exatamente igual a "Virginia".

    
por user106701 11.01.2012 / 19:43

1 resposta

7

Apenas para trazer o fechamento completo para este tópico: que, na verdade, era o problema. O "ca.crt" que eu tinha recebido ("Virginia") NÃO era na verdade o que meu colega estava usando ("VA"), e nenhum de nós notou na época.

Então ... basicamente (e puramente em termos leigos) VPN tentava dar um passeio até a cadeia de autoridade procurando o ca.crt que esperava encontrar, mas nunca o fez (porque não estava lá).

E, esta é uma daquelas mensagens maravilhosas que os sistemas de criptografia são tão conhecidos: inteiramente precisos e, no entanto, completamente misteriosos para os não iniciados. (E, para ser justo, os sistemas de criptografia não gostam de divulgar informações sobre qualquer coisa, pois presumem que a pessoa com quem estão conversando é certamente malvada Eva , não Alice ou Bob.)

    
por 16.04.2012 / 17:00