Estou tentando, sem êxito, usar TunnelBlick
(um cliente OS / X OpenVPN 2.2.1 que seja conhecido) para conectar-se usando certificados. Aqui está a mensagem de erro (higienizada) que recebo:
2012-01-11 11:18:26 TLS: Pacote inicial de **. **. **. **: 1194, sid = 17a4a801 5012e004 2012-01-11 11:18:26 VERIFICAR ERRO: profundidade = 1, erro = certificado autoassinado na cadeia de certificados: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = ** 2012-01-11 11:18:26 TLS_ERROR: BIO lê erro tls_read_plaintext: erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado 2012-01-11 11:18:26 Erro TLS: objeto TLS -> erro de leitura de texto sem formatação recebido 2012-01-11 11:18:26 Erro no TLS: falha no handshake TLS 2012-01-11 11:18:26 TCP / UDP: soquete de fechamento
Agora, aqui está o problema. Eu mesmo gerei um CSR para solicitar esse certificado, usando o arquivo ca.crt fornecido pelo outro lado (na verdade, eles fizeram isso duas vezes apenas para garantir).
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 maneira:
openssl verifica -CAfile ca.crt my.crt
my.crt: OK
Ok, agora estou completamente confuso e perplexo. Neste ponto, eu sei que o CSR e a chave foram gerados usando o CSR apropriado. De fato, aqui está o próprio 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
...
(piscar!)
Acabei de encontrar ?
A saída desse comando é semelhante a esta: (editada um pouco)
Assunto = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = ** emissor = (o mesmo)
enquanto na mensagem de erro do OpenVPN, o ST = não é exatamente o mesmo:
VERIFICAR ERRO: profundidade = 1, erro = certificado autoassinado na cadeia de certificados: / C = US / ST = Virgínia / L = ** / O = ** / CN = ** / emailAddress = **
"VA" não é exatamente igual a "Virginia".
openssl s_client -connect host:port -showcerts
e compare a impressão digital do certificado recebido comopenssl x509 -noout -text -in ca.crt
.Respostas:
Apenas para encerrar completamente esse segmento: esse era realmente o problema. O "ca.crt" que eu recebi ("Virginia") NÃO era de fato aquele que meu colega estava usando ("VA"), e nenhum de nós notou na época.
Então ... basicamente (e puramente em termos de leigos), a VPN estava tentando dar um passeio pela cadeia de autoridade procurando o ca.crt que esperava encontrar, mas nunca encontrou (porque não estava lá).
E, essa é uma daquelas mensagens maravilhosas pelas quais 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 nada, pois presumem que a pessoa com quem estão conversando é certamente uma Eva má , não agradável Alice ou Bob.)
fonte