Los errores ssl se notifican después de actualizar a TLS 1.2
En este artículo se proporciona información sobre los errores de Capa de sockets seguros (SSL) que puede encontrar después de actualizar a TLS 1.2 en SQL Server. También enumera los métodos por los que puede recuperar los datos manualmente. También puede ejecutar la herramienta SQLCHECK y revisar la información en el archivo de registro de SQLCHECK .
Síntomas
Tenga en cuenta el siguiente escenario en el que puede ver los siguientes problemas después de actualizar el protocolo TLS a TLS 1.2.
Microsoft SQL Server usa un certificado firmado por un algoritmo hash débil. Estos certificados incluyen MD5, SHA224 y SHA512.
Las actualizaciones de TLS 1.2 solo se aplicaron al cliente o al servidor, pero no a ambas.
TLS 1.0 está deshabilitado.
No hay algoritmos criptográficos coincidentes entre el cliente y el servidor.
En este escenario, se producen los siguientes problemas una vez finalizada la actualización:
Los problemas que afectan al certificado de servidor también afectan a las conexiones locales y las conexiones desde equipos cliente. Para obtener más información, vea Cifrar las conexiones a SQL Server.
La aplicación puede generar uno de los siguientes mensajes de error:
Canalizaciones con nombre
Se estableció correctamente una conexión con el servidor, pero luego se produjo un error durante el proceso de inicio de sesión. (proveedor: Proveedor SSL, error: 0 - Sin proceso en el otro extremo de la canalización) Microsoft SQL Server, Error: 233.
TCP
Se estableció correctamente una conexión con el servidor, pero luego se produjo un error durante el proceso de inicio de sesión. (proveedor: proveedor SSL, error: 0: la conexión se cerró forzadamente por el host remoto 10054) Microsoft SQL Server, Error: 233.
Si tiene una captura de red, puede parecerse a la siguiente captura de pantalla que muestra que el servidor responde al Client Hello
paquete cerrando la conexión.
Solución
Para resolver estos errores, siga estos pasos:
Abra Administrador de configuración de SQL Server, haga clic con el botón derecho en Protocolos para <InstanceName> y, a continuación, seleccione Propiedades.
Seleccione la pestaña Certificado y compruebe qué certificado se está usando.
Si existe un certificado, seleccione Ver para examinarlo y, a continuación, seleccione Borrar. A continuación, vaya al paso 4.
Si no existe ningún certificado, examine el archivo de registro de errores de SQL Server para obtener el código hash. Es posible que vea una de las siguientes entradas:
2023-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption.
o2023-05-19 04:58:56.42 spid11s A self-generated certificate was successfully loaded for encryption.
Si el certificado se genera automáticamente, vaya al paso 2.
Abra el Almacén de certificados de equipo en Microsoft Management Console (MMC).
Vaya a Certificados personales.
Expanda la columna Propósitos previstos y haga doble clic en certificados habilitados para la autenticación del servidor.
Compruebe si la huella digital coincide con la huella digital en el archivo de registro de errores. Si no es así, pruebe otro certificado.
Compruebe el algoritmo hash de firma. Si es MD5, SHA224 o SHA512, no admitirá TLS 1.2. Si es uno de los algoritmos débiles, deshabilite la autenticación de servidor para que SQL Server no pueda usarla.
Si el certificado se especifica explícitamente en Administrador de configuración de SQL Server, seleccione Borrar para quitarlo.
Busque el certificado en MMC.
En MMC, haga clic con el botón derecho en el certificado y seleccione Propiedades.
En la pestaña General , deshabilite el certificado completamente o de forma selectiva deshabilite la autenticación del servidor.
Guarde los cambios.
Reinicie SQL Server.
El registro de errores debe indicar ahora que se usa un certificado autogenerado. Si se resuelve el problema, SQL Server se puede ejecutar correctamente mediante el certificado autofirmado. Si desea verisign u otro certificado, debe pedir al proveedor de certificados que asegúrese de que se usa un hash seguro adecuado para TLS 1.2. Si el problema no se resuelve, vuelva al paso 2.
Comprobación de los protocolos TLS habilitados y deshabilitados
Para comprobar los protocolos TLS habilitados y deshabilitados, siga estos pasos:
Compruebe el flujo de trabajo de actualización básica y en segundo plano si aún no lo ha hecho.
Tanto el cliente como el servidor deben actualizarse para aplicar TLS 1.2. Si es necesario, puede actualizar el servidor, pero dejar TLS 1.0 habilitado para que los clientes no actualizados puedan conectarse.
Compruebe el registro SSL o TLS mediante REGEDIT.
Puede encontrar las versiones SSL o TLS habilitadas y deshabilitadas en la siguiente subclave del Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Hay subclaves de cliente y servidor para cada versión de SSL o TLS y tienen valores Habilitados y Deshabilitados :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
Nota:
Cualquier valor distinto de cero se trata como TRUE. Sin embargo, generalmente se prefiere 1 en lugar de FFFFFFFF (o -1).
Asegúrese de que no haya ninguna configuración incompatible.
Por ejemplo, TLS 1.0 está deshabilitado y TLS 1.2 está habilitado en el servidor. Esto se debe a que es posible que esta configuración no coincida con la configuración del cliente o que el controlador de cliente no se actualice.
Para probar esta situación, establezca
Enabled=0
TLS 1.2 (y vuelva a habilitar TLS 1.0 si está deshabilitado).Reinicie SQL Server para comprobar si el problema está relacionado con TLS 1.2 o si es un problema general.
No hay conjuntos de cifrado coincidentes
Puede examinar las versiones de TLS de cliente y servidor y los conjuntos de cifrado en los Client Hello
paquetes y Server Hello
. El Client Hello
paquete anuncia todos los conjuntos de cifrado de cliente y el Server Hello
paquete especifica un conjunto de cifrado. Si no hay conjuntos coincidentes, el servidor cierra la conexión en lugar de responder enviando el Server Hello
paquete.
Si un seguimiento de red no está disponible, puede comprobar el valor de la función en la siguiente subclave del Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002
Si no ve ningún algoritmo coincidente, póngase en contacto con Soporte técnico de Microsoft. Para ayudar al ingeniero de soporte técnico, capture seguimientos de red o seguimientos bid, tal como se especifica en Advanced SSL Data Capture.