Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Se aplica a:SQL Server en Linux
SQL Server en Linux puede usar Seguridad de la capa de transporte (TLS) para cifrar los datos transmitidos a través de una red entre una aplicación cliente y una instancia de SQL Server.
Compatibilidad con sistema operativo
SQL Server admite los mismos protocolos TLS en Windows y Linux: 1.3, 1.2, 1.1 y 1.0.
A partir de SQL Server 2025 (17.x):
- TLS 1.3 está habilitado de forma predeterminada
- No se admite SUSE Linux Enterprise Server (SLES)
Los pasos para configurar TLS son específicos del sistema operativo en el que se ejecuta SQL Server.
Note
TLS no es compatible con los extremos de creación de reflejo de la base de datos de los grupos de disponibilidad Always On.
Requisitos de los certificados
Asegúrese de que los certificados siguen estos requisitos:
La hora actual del sistema debe ser posterior a la propiedad
Valid fromdel certificado y anterior a la propiedadValid todel certificado.El certificado debe estar destinado a la autenticación del servidor. Esto requiere que la propiedad
Enhanced Key Usagedel certificado especifiqueServer Authentication (1.3.6.1.5.5.7.3.1).El certificado se debe crear mediante la opción
KeySpecdeAT_KEYEXCHANGE. Por lo general, la propiedad de uso de clave del certificado (KEY_USAGE) incluye también el cifrado de clave (CERT_KEY_ENCIPHERMENT_KEY_USAGE).La propiedad
Subjectdel certificado debe indicar que el nombre común (CN) es el mismo que el nombre del host o nombre de dominio completo (FQDN) del equipo servidor.Note
Se admiten certificados comodín.
Configuración de bibliotecas OpenSSL para su uso (opcional)
Puede crear vínculos simbólicos en el directorio /opt/mssql/lib/ que hagan referencia a qué bibliotecas libcrypto.so y libssl.so que se deben usar para el cifrado. Esto resulta útil si quiere forzar SQL Server a usar una versión específica de OpenSSL distinta del valor predeterminado que proporciona el sistema. Si estos vínculos simbólicos no están presentes, SQL Server carga en el sistema las bibliotecas configuradas predeterminadas de OpenSSL.
Estos vínculos simbólicos deben denominarse libcrypto.so y libssl.so y colocarse en el directorio /opt/mssql/lib/.
Note
Para ver un ejemplo del uso de Let's Encrypt para generar un certificado, consulte la entrada de blog Desbloquear el poder de los datos en Azure con SQL Server en máquinas virtuales de Azure con Linux y Azure AI Search.
Visión general
TLS se usa para cifrar las conexiones de una aplicación cliente a SQL Server. Cuando se configura correctamente, TLS proporciona privacidad e integridad de datos para las comunicaciones entre el cliente y el servidor. Tanto el cliente como el servidor pueden iniciar conexiones TLS.
Note
TLS no es compatible con los extremos de creación de reflejo de la base de datos de los grupos de disponibilidad Always On.
En la sección siguiente se describe cómo configurar el cifrado iniciado por el cliente.
Generar certificado
/CN debe coincidir con el nombre de dominio completo del host de SQL Server.
Caution
En este ejemplo se usa un certificado autofirmado. Los certificados autofirmados no se deben usar para escenarios de producción. Debe usar certificados de CA.
Asegúrate de que las carpetas donde guardas tus certificados y claves privadas sean accesibles para el mssql usuario o grupo y tengan los permisos configurados en 700 (drwx------). Puedes crear carpetas manualmente con permisos configurados en 700 (drwx------) y propiedad del mssql usuario o grupo. Alternativamente, configura los permisos en 755 (drwxr-xr-x) y asegúrate de que las carpetas sean accesibles para el mssql grupo. Por ejemplo, puedes crear una carpeta llamada sslcert bajo la ruta /var/opt/mssql/ y guardar el certificado y la clave privada con permisos en los archivos configurados en 600, como se muestra en el siguiente ejemplo.
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=mssql.contoso.com' -keyout mssql.key -out mssql.pem -days 365
sudo chown mssql:mssql mssql.pem mssql.key
sudo chmod 600 mssql.pem mssql.key
# Save the certificate to the certs folder under /etc/ssl/
sudo mv mssql.pem /etc/ssl/certs/
# Save the private key to the private folder under /etc/ssl/
sudo mv mssql.key /etc/ssl/private/
Configuración de SQL Server
Para SQL Server 2022 (16.x) y versiones anteriores:
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.tlsprotocols 1.2
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
Para SQL Server 2025 (17.x):
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
Registro del certificado en el equipo cliente (Windows, Linux o macOS)
Si usas un certificado firmado por la CA, copia el certificado de la Autoridad Certificadora (CA) en lugar del certificado de usuario al equipo cliente.
Si usas el certificado auto-firmado, copia el
.pemarchivo a la carpeta de tu distribución y ejecuta el comando para habilitarlo:Ubuntu: Copia el certificado a
/usr/share/ca-certificates/, renombra su extensión a.crt, y úsalodpkg-reconfigure ca-certificatespara habilitarlo como certificado de la CA del sistema.RHEL: Copia el certificado y
/etc/pki/ca-trust/source/anchors/úsaloupdate-ca-trustpara habilitarlo como certificado de la CA del sistema.SUSE: Copia el certificado a
/usr/share/pki/trust/anchors/y usaupdate-ca-certificatespara habilitarlo como certificado de CA del sistema.Windows: Importa el archivo
.pemcomo certificado en Usuario actual>>.macOS:
Copia el certificado a
/usr/local/etc/openssl/certs.Ejecute el comando siguiente para obtener el valor hash:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutCambie el nombre del certificado al valor. Por ejemplo, use
mv mssql.pem dc2dd900.0. Asegúrate de quedc2dd900.0esté en/usr/local/etc/openssl/certs.
Ejemplos de cadena de conexión
Caution
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
SQL Server Management Studio
sqlcmdsqlcmd -S <sqlhostname> -N -U sa -P '<password>'ADO.NET
"Encrypt=True; TrustServerCertificate=False;"ODBC
"Encrypt=Yes; TrustServerCertificate=no;"JDBC
"encrypt=true; trustServerCertificate=false;"
Errores de conexión comunes
| Mensaje de error | Corregir |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Este error se produce cuando los clientes no pueden comprobar la firma del certificado que ha presentado SQL Server durante el protocolo de enlace de TLS. Asegúrese de que el cliente confía directamente en el certificado SQL Server o en la CA que firmó el certificado de SQL Server. |
The target principal name is incorrect. |
Asegúrate de que el campo de nombre común en el certificado de SQL Server coincida con el nombre del servidor especificado en la cadena de conexión del cliente. |
An existing connection was forcibly closed by the remote host. |
Este error puede producirse si el cliente no admite la versión del protocolo TLS que requiere SQL Server. Por ejemplo, si SQL Server está configurado para requerir TLS 1.2, asegúrese de que los clientes también admitan el protocolo TLS 1.2. |
Ubuntu 20.04 y otras versiones de distribuciones de Linux recientes
Síntoma
Cuando una instancia de SQL Server en Linux carga un certificado creado con un algoritmo de firma con menos de 112 bits de seguridad (ejemplos: MD5, SHA-1), es posible que observe un error de conexión, como en este ejemplo:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - An existing connection was forcibly closed by the remote host.) (Microsoft SQL Server, Error: 10054)
El error se debe a que el nivel de seguridad 2 de OpenSSL está habilitado de forma predeterminada en Ubuntu 20.04 y versiones posteriores. El nivel de seguridad 2 prohíbe que se establezcan conexiones TLS que tengan menos de 112 bits de seguridad.
Solución
Instale un certificado con un algoritmo de firma con al menos 112 bits de seguridad. Los algoritmos de firma que cumplen este requisito incluyen SHA-224, SHA-256, SHA-384 y SHA-512.