Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server em Linux
O SQL Server no Linux pode usar TLS (Transport Layer Security) para criptografar dados transmitidos por uma rede entre um aplicativo cliente e uma instância do SQL Server.
Suporte de sistema operativo
O SQL Server suporta os mesmos protocolos TLS tanto no Windows como no Linux: 1.3, 1.2, 1.1 e 1.0.
A partir do SQL Server 2025 (17.x):
- O TLS 1.3 está ativado por defeito
- O SUSE Linux Enterprise Server (SLES) não é suportado
As etapas para configurar o TLS são específicas para o sistema operacional no qual o SQL Server está sendo executado.
Note
TLS não é suportado para os pontos finais de espelhamento de bases de dados dos grupos de disponibilidade Always On.
Requisitos aplicáveis aos certificados
Certifique-se de que os seus certificados seguem estes requisitos:
A hora atual do sistema deve ser após a data indicada pela propriedade
Valid fromdo certificado e antes da data indicada pela propriedadeValid todo certificado.O certificado deve ser destinado à autenticação do servidor. Isso requer a propriedade
Enhanced Key Usagedo certificado para especificarServer 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 codificação de chave (CERT_KEY_ENCIPHERMENT_KEY_USAGE).A propriedade
Subjectdo certificado deve indicar que o nome comum (CN) é o mesmo que o nome do host ou nome de domínio totalmente qualificado (FQDN) do computador servidor.Note
Há suporte para certificados wildcard.
Configurar as 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 é útil se você quiser forçar o SQL Server a usar uma versão específica do OpenSSL diferente do padrão fornecido pelo sistema. Se esses links simbólicos não estiverem presentes, o SQL Server carregará as bibliotecas OpenSSL configuradas padrão no sistema.
Esses links simbólicos devem ser nomeados libcrypto.so e libssl.so e colocados no diretório /opt/mssql/lib/.
Note
Para obter um exemplo de como usar o Let's Encrypt para gerar um certificado, consulte a postagem do blog Desbloqueie o poder dos dados no Azure com o SQL Server em VMs do Azure no Linux e a pesquisa do Azure AI.
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 pelo servidor.
Note
TLS não é suportado para os pontos finais de espelhamento de bases de dados dos grupos 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.
Atenção
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 CA.
Certifique-se de que as pastas onde guarda os seus certificados e chaves privadas são acessíveis pelo mssql utilizador ou grupo e têm permissões definidas para 700 (drwx------). Pode criar pastas manualmente com permissões definidas para 700 (drwx------) e pertencentes ao mssql utilizador ou grupo. Alternativamente, defina as permissões para 755 (drwxr-xr-x) e certifique-se de que as pastas são acessíveis ao mssql grupo. Por exemplo, pode criar uma pasta chamada sslcert no path /var/opt/mssql/ e guardar o certificado e a chave privada com permissões nos ficheiros definidos como 600, como mostrado no exemplo seguinte.
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 o SQL Server
Para 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
Registre o certificado em sua máquina cliente (Windows, Linux ou macOS)
Se estiver a usar um certificado assinado pela CA, copie o certificado da Autoridade Certificadora (CA) em vez do certificado de utilizador para a máquina cliente.
Se estiver a usar o certificado auto-assinado, copie o
.pemficheiro para a pasta da sua distribuição e execute o comando para o ativar:Ubuntu: Copie o certificado para
/usr/share/ca-certificates/, renomeie a sua extensão para.crt, e usedpkg-reconfigure ca-certificatespara o ativar como certificado da CA do sistema.RHEL: Copie o certificado para
/etc/pki/ca-trust/source/anchors/e useupdate-ca-trustpara o ativar como certificado de CA do sistema.SUSE: Copie o certificado para
/usr/share/pki/trust/anchors/e useupdate-ca-certificatespara o ativar como certificado de CA do sistema.Windows: Importe o
.pemficheiro como certificado em Utilizador 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 -nooutRenomeie o certificado para o novo valor. Por exemplo, use
mv mssql.pem dc2dd900.0. Certifique-se de quedc2dd900.0está em/usr/local/etc/openssl/certs.
Exemplo de cadeias de conexão
Atenção
A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.
SQL Server Management Studio (Estúdio de Gestão do Servidor SQL)
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 comuns de conexão
| Mensagem de erro | Corrigir |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Este erro ocorre quando os clientes não conseguem verificar a assinatura no certificado apresentado pelo SQL Server durante o handshake TLS. Verifique se o cliente confia diretamente no certificado do SQL Server ou na autoridade de certificação 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 corresponde ao nome do servidor especificado na cadeia de ligação do cliente. |
An existing connection was forcibly closed by the remote host. |
Este erro pode ocorrer quando o cliente não suporta a versão do protocolo TLS exigida pelo SQL Server. Por exemplo, se o SQL Server estiver configurado para exigir TLS 1.2, certifique-se de que seus clientes também oferecem suporte ao protocolo TLS 1.2. |
Ubuntu 20.04 e outros lançamentos recentes de distribuição Linux
Symptom
Quando uma instância do SQL Server no 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 este 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 é devido ao nível de segurança OpenSSL 2 ser ativado por padrão no Ubuntu 20.04 e versões posteriores. O nível de segurança 2 proíbe o estabelecimento de conexões TLS com menos de 112 bits de segurança.
Solução
Instale um certificado com um algoritmo de assinatura usando pelo menos 112 bits de segurança. Os algoritmos de assinatura que satisfazem esse requisito incluem SHA-224, SHA-256, SHA-384 e SHA-512.