SQL Server no se inicia cuando el servidor está configurado para usar SSL
En este artículo se proporciona una resolución del error 17182 (error de inicialización de TDSSNIClient con error 0xd, código de estado 0x38) que se produce cuando el servidor está configurado para usar SSL.
Se aplica a: SQL Server
Número de KB original: 2023869
Síntomas
Considere el caso siguiente:
Tiene una instancia de SQL Server 2005 o una versión posterior hospedada en un sistema que ejecuta Windows Server 2008 o una versión posterior del sistema operativo.
Ha configurado el cifrado SSL para SQL Server; para ello, escriba manualmente la huella digital de un certificado en el valor Certificado en la siguiente clave del Registro:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
En este escenario, es posible que sql Server no se inicie y los siguientes mensajes se registren en el registro de errores de SQL Server:
<Error del servidor datetime> : 17182, gravedad: 16, estado: 1.
<Error en la inicialización de TDSSNIClient del servidor datetime> con 0xd de error, 0x38 de código de estado.
<Error del servidor datetime> : 17182, gravedad: 16, estado: 1. <Error al inicializar Datetime> Server TDSSNIClient con 0xd de error, 0x1 de código de estado.
<Error del servidor datetime> : 17826, gravedad: 18, estado: 3.
<Datetime> Server No se pudo iniciar la biblioteca de red debido a un error interno en la biblioteca de red. Para determinar la causa, revise los errores inmediatamente anteriores a éste en el registro de errores.
<Error del servidor datetime> : 17120, gravedad: 16, estado: 1.
<Datetime> Server SQL Server no pudo generar el subproceso FRunCM. Busque información sobre posibles problemas relacionados en el registro de errores de SQL Server y el registro de eventos de Windows.
Causa
Una causa principal común para estos síntomas es un carácter invisible que puede haberse agregado involuntariamente al valor de huella digital del certificado, cuando se copia fuera del control de edición enriquecida del complemento Certificados en MMC.
Solución
Puede usar cualquiera de las siguientes resoluciones:
Evite copiar caracteres iniciales desde el complemento Certificados MMC cuando copie el valor de huella digital de un certificado.
Use la herramienta Certutil en lugar del complemento de certificados MMC para exportar el certificado a un archivo de texto y, a continuación, copie el valor de huella digital del certificado necesario del archivo de texto. A continuación se muestra el uso:
Para ver el contenido del almacén de certificados de usuario actual del equipo, escriba lo siguiente en el símbolo del sistema:
certutil -store -user my
Para ver el contenido del almacén de certificados del equipo local, escriba lo siguiente en el símbolo del sistema:
certutil -store my
Puede dirigir la salida del comando anterior a un archivo de texto mediante lo siguiente en un símbolo del sistema administrativo en sistemas operativos basados en Vista:
certutil -store my > cert.txt
La huella digital se puede ubicar en la línea que comienza por Cert Hash(sha1)
Por ejemplo: Cert Hash(sha1): e7 02 4b 42 c4 04 fd 44 8c ec 21 f1 91 76 5c b7 c3 ad 1d 55
A continuación, puede copiar este valor (sin espacios; para el ejemplo anterior, será e7024b42c404fd448cec21f191765cb7c3ad1d55) en el valor certificate en la siguiente clave del Registro:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
Más información
Un código de estado 0x38 en el mensaje de error 17182 significa que SQL Server experimentó un error durante la inicialización de SSL. Consulte Protocolos SQL para obtener más detalles.
El código de retorno 0xd denota el error del sistema operativo 0xd (13), que se traduce en "Los datos no son válidos" El error anterior 17182 "Error de inicialización de TDSSNIClient con error 0xd, el código de estado 0x38" se produce específicamente debido al hecho de que la cadena en Valor de certificado no se puede convertir correctamente a una huella digital válida del certificado.
Este problema de GUI con el complemento Certificados no se produce en versiones anteriores de Windows (por ejemplo, Windows XP, Windows Server 2003), ya que no usan un control de edición enriquecido en el complemento Certificados
Para comprobar si se encuentra en el problema documentado en este artículo, puede usar el procedimiento siguiente:
Abra regedit y vaya a la siguiente clave del Registro y exporte la clave a SSLKey.reg archivo:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
Abra el archivo SSLKey.reg del Paso 1 con el Bloc de notas y use el cuadro de diálogo Guardar como en el menú Archivo , haga clic en ANSI en la lista Codificación y, a continuación, haga clic en Guardar.
Si recibe la advertencia siguiente, continúe con el paso 3 haciendo clic en Aceptar.
Advertencia
Este archivo contiene caracteres en formato Unicode que se perderán si guarda este archivo como un archivo de texto codificado anSI. Para mantener la información Unicode, haga clic en Cancelar a continuación y, a continuación, seleccione una de las opciones Unicode de la lista desplegable Codificación. ¿Continuar?
Cierre el archivo SSLKey.reg y vuelva a abrirlo mediante el Bloc de notas.
Si ahora ve una marca de preguntas o cualquier otro carácter no válido en la huella digital del certificado, es una indicación de que probablemente se encuentra en el problema documentado en este artículo:
Una entrada de ejemplo puede tener un aspecto similar al siguiente:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib]
"Certificate"="?b009d02038431da32f095b4ea6a126f4f5c7d18"