Estoy intentando utilizar sin éxito TunnelBlick
(un cliente OS / X OpenVPN 2.2.1 que es conocido) para conectarse usando certificados. Aquí está el mensaje de error (desinfectado) que recibo:
2012-01-11 11:18:26 TLS: paquete inicial de **. **. **. **: 1194, sid = 17a4a801 5012e004 2012-01-11 11:18:26 VERIFICAR ERROR: profundidad = 1, error = certificado autofirmado en la cadena de certificados: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = ** 2012-01-11 11:18:26 TLS_ERROR: BIO read tls_read_plaintext error: error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error de verificación del certificado 2012-01-11 11:18:26 Error de TLS: objeto de TLS -> error de lectura de texto sin formato entrante 2012-01-11 11:18:26 Error de TLS: error de apretón de manos de TLS 2012-01-11 11:18:26 TCP / UDP: Cierre de socket
Ahora, aquí está el problema. Yo mismo generé un CSR para solicitar este certificado, utilizando el archivo ca.crt que me proporcionó la otra parte (de hecho, lo hicieron dos veces solo para asegurarse).
Las entradas relevantes en la configuración del cliente son:
ca ca.crt
cert my.crt
key my.key
y, además ... puedo verificar las claves de esta manera:
openssl verificar -CAfile ca.crt my.crt
my.crt: OK
Bien, ahora estoy completamente desconcertado y perplejo. En este punto, sé que la CSR y la clave se generaron utilizando la CSR adecuada. De hecho, aquí está el comando que lo hizo:
openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key
También sabía hacer esto:
openssl x509 -subject -issuer -noout -in ca.crt
...
(¡parpadeo!)
¿Lo acabo de encontrar ?
El resultado de ese comando se ve así: (editado de alguna manera)
asunto = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = ** emisor = (lo mismo)
mientras que en el mensaje de error de OpenVPN, el ST = no es exactamente el mismo:
VERIFICAR ERROR: profundidad = 1, error = certificado autofirmado en la cadena de certificados: / C = US / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **
"VA" no es exactamente igual a "Virginia".
openssl s_client -connect host:port -showcerts
y compare la huella digital del certificado recibido conopenssl x509 -noout -text -in ca.crt
.Respuestas:
Solo para cerrar completamente este hilo: ese fue el problema. El "ca.crt" que había recibido ("Virginia") NO era el que estaba usando mi colega ("VA"), y ninguno de nosotros lo notó en ese momento.
Entonces ... básicamente (y en términos simples) VPN estaba tratando de dar un paseo por la cadena de autoridad buscando el ca.crt que esperaba encontrar, pero nunca lo hizo (porque no estaba allí).
Y este es uno de esos maravillosos mensajes por los que los sistemas criptográficos son tan conocidos: completamente exactos y, sin embargo, completamente misteriosos para los no iniciados. (Y, para ser justos, a los sistemas criptográficos no les gusta divulgar información sobre nada, ya que suponen que la persona con la que están hablando es seguramente la malvada Eve , no la buena Alice o Bob).
fuente