
Tengo un servidor https que requiere mTLS (autenticación de certificado de cliente). Cuando intento acceder al servidor usando Chrome (Versión 75.0.3770.100 (compilación oficial) (64 bits)) en Windows 10, me pide que seleccione el certificado del cliente (lo cual hago). Luego Chrome regresa con ERR_NOT_IMPLEMENTED.
Información adicional:
- Puedo acceder al servidor usando la misma URL desde IE11, Edge y Firefox
- Se establece la confianza en los certificados del servidor. Se establece el certificado de CA (se importó la CA al almacén de autoridades de certificación raíz de confianza). La conexión está marcada como segura en IE.
- Registro de red de Chrome capturado. Podría encontrar los problemas aquí:
t=3200 [st=10] SSL_HANDSHAKE_MESSAGE_RECEIVED
--> bytes =
0E 00 00 00 .
--> type = 14
t=3200 [st=10] SSL_CLIENT_CERT_REQUESTED
t=3201 [st=11] SSL_HANDSHAKE_ERROR
--> error_lib = 16
--> error_reason = 228
--> file = "../../third_party/boringssl/src/ssl/ssl_cert.cc"
--> line = 242
--> net_error = -11 (ERR_NOT_IMPLEMENTED)
--> ssl_error = 1
t=3201 [st=11] -SSL_CONNECT
--> net_error = -11 (ERR_NOT_IMPLEMENTED)
t=3201 [st=11] SOCKET_CLOSED
Miré el código fuente de ssl_cert.cc:242
BoringSSL enhttps://github.com/google/boringssl/blob/d6f9c359d219055a89c676cb8886421b145a08da/ssl/ssl_cert.cc#L242.
El código relevante aquí parece ser:
bool ssl_is_key_type_supported(int key_type) {
return key_type == EVP_PKEY_RSA || key_type == EVP_PKEY_EC ||
key_type == EVP_PKEY_ED25519;
}
O en otras palabras. Si se trata de un certificado RSA, la función debería devolver verdadero y no debería provocar el error descrito anteriormente.
¿Alguna idea de lo que está mal aquí?
Gracias.