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".