Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server no Linux
O SQL Server no Linux pode usar o protocolo TLS para criptografar os dados transmitidos por uma rede entre um aplicativo cliente e uma instância do SQL Server.
Suporte ao sistema operacional
SQL Server dá suporte aos mesmos protocolos TLS em Windows e Linux: 1.3, 1.2, 1.1 e 1.0.
A partir do SQL Server 2025 (17.x):
- O TLS 1.3 está habilitado por padrão
- Não há suporte para SLES (SUSE Linux Enterprise Server)
As etapas para configurar o TLS são específicas para o sistema operacional no qual o SQL Server está em execução.
Note
O TLS não é compatível com os pontos de extremidade de espelhamento do banco de dados do grupo de disponibilidade Always On.
Requisitos para certificados
Certifique-se de que seus certificados sigam esses requisitos:
A hora do sistema atual deve ser posterior à propriedade
Valid fromdo certificado e anterior à propriedadeValid todo certificado.O certificado deve ser significativo para a autenticação do servidor. Isso requer que a propriedade
Enhanced Key Usagedo certificado especifiqueServer Authentication (1.3.6.1.5.5.7.3.1).O certificado deve ser criado usando a opção
KeySpecdeAT_KEYEXCHANGE. Normalmente, a propriedade de uso de chave do certificado (KEY_USAGE) também inclui a codificação de chaves (CERT_KEY_ENCIPHERMENT_KEY_USAGE).A propriedade
Subjectdo certificado deve indicar que o nome comum (CN) é igual ao nome do host ou ao nome de domínio totalmente qualificado (FQDN) do computador servidor.Note
Certificados wildcard são suportados.
Como configurar bibliotecas OpenSSL para uso (opcional)
Você pode criar links simbólicos no diretório /opt/mssql/lib/ que fazem referência a quais bibliotecas libcrypto.so e libssl.so devem ser usadas para criptografia. Isso será útil se você quiser forçar o SQL Server a usar uma versão específica do OpenSSL diferente da versão padrão fornecida pelo sistema. Se esses links simbólicos não estiverem presentes, o SQL Server carregará as bibliotecas do OpenSSL padrão configuradas no sistema.
Esses links simbólicos devem se chamar libcrypto.so e libssl.so e ser colocados no diretório /opt/mssql/lib/.
Note
Para um exemplo de uso do Let's Encrypt para gerar um certificado, consulte a postagem do blog Desbloqueie o poder dos dados no Azure com o SQL Server em máquinas virtuais Linux do Azure e pesquisa de IA do Azure.
Overview
O TLS é usado para criptografar conexões de um aplicativo cliente para o SQL Server. Quando configurado corretamente, o TLS fornece privacidade e integridade de dados para comunicações entre o cliente e o servidor. As conexões TLS podem ser iniciadas pelo cliente ou iniciadas pelo servidor.
Note
O TLS não é compatível com os pontos de extremidade de espelhamento do banco de dados do grupo de disponibilidade Always On.
A seção a seguir descreve a configuração da criptografia iniciada pelo cliente.
Gerar certificado
/CN deve corresponder ao nome de domínio totalmente qualificado do host do SQL Server.
Caution
Este exemplo usa um certificado autoassinado. Os certificados autoassinados não devem ser usados para cenários de produção. Você deve usar certificados de autoridade (CA).
Certifique-se de que as pastas onde você salva seus certificados e chaves privadas estejam acessíveis pelo mssql usuário ou grupo e tenham permissões definidas para 700 (drwx------). Você pode criar pastas manualmente com permissões definidas como 700 (drwx------) e pertencentes ao mssql usuário ou grupo. Alternativamente, defina as permissões para 755 (drwxr-xr-x) e certifique-se de que as pastas estejam acessíveis ao mssql grupo. Por exemplo, você pode criar uma pasta chamada sslcert sob o caminho /var/opt/mssql/ e salvar o certificado e a chave privada com permissões nos arquivos definidos como 600, como mostrado no exemplo a seguir.
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/
Configurar SQL Server
Para o SQL Server 2022 (16.x) e versões 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
Registrar o certificado no computador cliente (Windows, Linux ou macOS)
Se você estiver usando um certificado assinado pela CA, copie o certificado da Autoridade Certificadora (CA) em vez do certificado de usuário para a máquina cliente.
Se você estiver usando o certificado autoassinado, copie o
.pemarquivo para a pasta da sua distribuição e execute o comando para habilitá-lo:Ubuntu: Copie o certificado para
/usr/share/ca-certificates/, renomeie sua extensão para.crt, e usedpkg-reconfigure ca-certificatespara habilitá-lo como um certificado da CA do sistema.RHEL: Copie o certificado para
/etc/pki/ca-trust/source/anchors/e useupdate-ca-trustpara habilitá-lo como um certificado de CA do sistema.SUSE: Copie o certificado para
/usr/share/pki/trust/anchors/e useupdate-ca-certificatespara habilitá-lo como um certificado de CA do sistema.Windows: Importe o arquivo
.pemcomo certificado em Usuário Atual>>.macOS:
Copie o certificado para
/usr/local/etc/openssl/certs.Execute o seguinte comando para obter o valor de hash:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutAltere o nome do certificado para o valor desejado. Por exemplo, use
mv mssql.pem dc2dd900.0. Certifique-se de quedc2dd900.0está em/usr/local/etc/openssl/certs.
Exemplos de cadeias de conexão
Caution
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas que sejam tão longas e complexas quanto possível.
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;"
Erros de conexão comuns
| Mensagem de erro | Corrigir |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Esse erro ocorre quando os clientes não conseguem verificar a assinatura no certificado apresentado por SQL Server durante o handshake de TLS. Verifique se o cliente confia no certificado do SQL Server diretamente ou na AC que assinou o certificado do SQL Server. |
The target principal name is incorrect. |
Certifique-se de que o campo do nome comum no certificado do SQL Server corresponda ao nome do servidor especificado na cadeia de conexão do cliente. |
An existing connection was forcibly closed by the remote host. |
Esse erro pode ocorrer quando o cliente não é compatível com a versão do protocolo TLS exigida pelo SQL Server. Por exemplo, se SQL Server estiver configurado para exigir o TLS 1.2, verifique se os clientes também são compatíveis com o protocolo TLS 1.2. |
Ubuntu 20.04 e outras versões de distribuição recentes do Linux
Sintoma
Quando um SQL Server em uma instância do Linux carrega um certificado que foi criado com um algoritmo de assinatura usando menos de 112 bits de segurança (exemplos: MD5, SHA-1), você pode observar um erro de falha de conexão, como neste exemplo:
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)
O erro ocorre porque o nível de segurança 2 do OpenSSL está habilitado por padrão no Ubuntu 20.04 e versões posteriores. O nível de segurança 2 proíbe que conexões TLS com menos de 112 bits de segurança sejam estabelecidas.
Solução
Instale um certificado com um algoritmo de assinatura usando pelo menos 112 bits de segurança. Os algoritmos de assinatura que atendem a esse requisito incluem SHA-224, SHA-256, SHA-384 e SHA-512.