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
.