Habilitar conexões criptografadas com o Mecanismo de Banco de Dados

Aplica-se a: simSQL Server (todas as versões compatíveis)

Saiba como criptografar dados entre canais de comunicação. Habilite conexões criptografadas para uma instância do Mecanismo de Banco de Dados do SQL Server e use o SQL Server Configuration Manager para especificar um certificado.

O computador servidor precisa ter um certificado provisionado. Para provisionar o certificado no computador servidor, importe-o para o Windows. O computador cliente precisa ser configurado para confiar na autoridade raiz do certificado.

Importante

Após o SQL Server 2016 (13.x), o protocolo SSL foi descontinuado. Use o protocolo TLS em vez disso.

Protocolo TLS

O SQL Server pode usar o Protocolo TLS para criptografar dados transmitidos em uma rede entre uma instância de SQL Server e um aplicativo cliente. A criptografia TLS é realizada dentro da camada de protocolo e está disponível para todos os clientes SQL Server com suporte.

O TLS pode ser usado para validação de servidor quando uma conexão de cliente solicita criptografia. Se a instância do SQL Server estiver sendo executada em um computador ao qual foi atribuído um certificado de uma autoridade de certificação pública, a identidade do computador e a instância do SQL Server serão emitidas pela cadeia de certificados que leva à autoridade raiz confiável. Essa validação de servidor exige que o computador no qual o aplicativo cliente está sendo executado seja configurado para confiar na autoridade raiz do certificado que é usado pelo servidor.

A criptografia com um certificado autoassinado é possível e está descrita na seção a seguir, mas um certificado autoassinado oferece apenas proteção limitada. O nível de criptografia usado pelo TLS, 40 ou 128 bits, depende da versão do sistema operacional do Microsoft Windows em execução no aplicativo e nos computadores do banco de dados.

Aviso

O uso do nível de criptografia de 40 bits é considerado inseguro.

Aviso

As conexões TLS criptografadas usando um certificado autoassinado não fornecem alta segurança. Elas são suscetíveis a ataques “man-in-the-middle”. Não se deve confiar no TLS usando certificados autoassinados em um ambiente de produção ou em servidores conectados à Internet.

A habilitação da criptografia TLS aumenta a segurança dos dados transmitidos pelas redes entre instâncias do SQL Server e aplicativos. No entanto, quando todo o tráfego entre o SQL Server e um aplicativo cliente é criptografado usando TLS, o seguinte processamento adicional é necessário:

  • Idas e voltas extras da rede são necessárias no momento da conexão.
  • Os pacotes enviados do aplicativo para a instância do SQL Server devem ser criptografados pela pilha TLS do cliente e descriptografados pela pilha TLS do servidor.
  • Os pacotes enviados da instância do SQL Server para o aplicativo devem ser criptografados pela pilha TLS do servidor e descriptografados pela pilha TLS do cliente.

Sobre certificados

O certificado deve ser emitido para Autenticação do Servidor. O nome do certificado deve ser o FQDN (nome de domínio totalmente qualificado) do computador.

Os certificados são armazenados localmente para os usuários no computador. Para instalar um certificado para uso do SQL Server, é necessário executar o SQL Server Configuration Manager com uma conta que tem privilégios de administrador local.

O cliente deve poder verificar a propriedade do certificado usado pelo servidor. Se o cliente tiver o certificado de chave pública da autoridade de certificação que assinou o certificado de servidor, nenhuma outra configuração será necessária. Microsoft Windows inclui os certificados de chave pública de muitas autoridades de certificação. Se o certificado do servidor foi assinado por uma autoridade de certificação pública ou privada para a qual o cliente não tem o certificado de chave pública, será necessário instalar o certificado de chave pública da autoridade de certificação que assinou o certificado do servidor.

Observação

Para usar critografia com um cluster de failover, você deve instalar o certificado de servidor com o nome DNS completamente qualificado do servidor virtual em todos os nós no cluster de failover. Por exemplo, se você tiver um cluster de dois nós, com nós chamados test1.*<your company>*.com e _test2._<your company>*.com*, e tiver um servidor virtual chamado virtsql*_, precisará instalar um certificado para _ _virtsql._<your company>*.com nos dois nós. É possível definir o valor da opção ForceEncryption na caixa de propriedade Protocolos para virtsql de Configuração de Rede do SQL Server como Sim.

Observação

Ao criar conexões criptografadas para um indexador do Azure Search para SQL Server em uma VM do Azure, confira Configurar uma conexão de um indexador do Azure Search para SQL Server em uma VM do Azure.

Requisitos de certificado

Para o SQL Server carregar um certificado TLS, o certificado deve atender às seguintes condições:

  • O certificado deve estar no repositório de certificado do computador local ou no armazenamento de certificado do usuário atual.

  • A Conta de Serviço do SQL Server deve ter a permissão necessária para acessar o certificado TLS.

  • A hora do sistema atual deve ser posterior à propriedade Válido de do certificado e anterior à propriedade Válido até do certificado.

Observação

A validade do certificado é avaliada ao se conectar ao SQL Server com conexões de cliente iniciadas especificando a opção de criptografia como true, a menos que seja substituída pela configuração de certificado do servidor de confiança.

  • O certificado deve ser significativo para a autenticação do servidor. Isso exige a propriedade Uso Avançado de Chave do certificado para especificar a Autenticação do Servidor (1.3.6.1.5.5.7.3.1) .

  • O certificado deve ser criado usando a opção KeySpec de AT_KEYEXCHANGE. Isso requer um certificado herdado. Normalmente, a propriedade de uso de chave do certificado (KEY_USAGE) também incluirá a codificação de chaves (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • A propriedade Assunto do 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. Ao usar o nome do host, o sufixo DNS precisa ser especificado no certificado. Se o SQL Server estiver em execução em um cluster de failover, o nome comum deverá corresponder ao nome do host ou ao FQDN do servidor virtual e os certificados deverão ser fornecidos em todos os nós no cluster de failover.

  • O SQL Server 2008 R2 e o SQL Server 2008 R2 SNAC (Cliente Nativo) dão suporte a certificados curinga. O SNAC foram preteridos desde então e substituídos pelo Driver do Microsoft OLE DB para SQL Server e Microsoft ODBC Driver for SQL Server. Outros clientes podem não dar suporte a certificados curinga.
    O certificado curinga não pode ser selecionado usando o SQL Server Configuration Manager. Para usar um certificado curinga, é necessário editar a chave do Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib e inserir a impressão digital do certificado, sem espaços, no valor Certificado.

    Aviso

    A edição incorreta do Registro pode danificar seriamente o sistema. Antes de fazer alterações no Registro, é recomendável fazer backup dos dados importantes no computador.

Instalar em um servidor único

Com SQL Server 2019 (15.x), o gerenciamento de certificados integra-se ao SQL Server Configuration Manager. O SQL Server Configuration Manager para SQL Server 2019 (15.x) pode ser usado com versões anteriores do SQL Server. Consulte Gerenciamento de Certificado (SQL Server Configuration Manager) para adicionar um certificado em uma instância do SQL Server única.

Se estiver usando SQL Server 2012 (11.x) por meio do SQL Server 2017 (14.x) e o SQL Server Configuration Manager para SQL Server 2019 (15.x) não estiver disponível, siga estas etapas:

  1. No menu Iniciar , clique em Executar e na caixa Abrir , digite MMC e clique em OK.

  2. No console do MMC, no menu Arquivo , clique em Adicionar/Remover Snap-in.

  3. Na caixa de diálogo Adicionar/Remover Snap-in , clique em Adicionar.

  4. Na caixa de diálogo Adicionar Snap-in Autônomo , clique em Certificados e em Adicionar.

  5. Na caixa de diálogo Snap-in de certificados , clique em Conta de computador e em Concluir.

  6. Na caixa de diálogo Adicionar Snap-in Autônomo , clique em Fechar.

  7. Na caixa de diálogo Adicionar/Remover Snap-in , clique em OK.

  8. No snap-in de Certificados , expanda Certificados, expanda Pessoal, clique com o botão direito do mouse em Certificados, aponte para Todas as Tarefas e clique em Importar.

  9. Clique com o botão direito do mouse no certificado importado, aponte para Todas as Tarefas e clique em Gerenciar Chaves Privadas. Na caixa de diálogo Segurança, adicione a permissão de leitura para a conta de usuário usada pela conta de serviço do SQL Server.

  10. Complete o Assistente para Importação de Certificados, para adicionar um certificado ao computador e feche o console MMC. Para obter mais informações sobre como adicionar um certificado a um computador, consulte sua documentação do Windows.

Importante

Para ambientes de produção, é recomendável obter um certificado emitido por uma Autoridade de Certificação.
Para fins de teste, o certificado autoassinado também pode ser usado. Para criar um certificado autoassinado, confira o cmdlet do Powershell New-SelfSignedCertificate ou o comando certreq.

Instalar entre vários servidores

Com SQL Server 2019 (15.x), o gerenciamento de certificados integra-se ao SQL Server Configuration Manager. O SQL Server Configuration Manager para SQL Server 2019 (15.x) pode ser usado com versões anteriores do SQL Server. Consulte Gerenciamento de Certificados (SQL Server Configuration Manager) para adicionar um certificado em uma configuração do Cluster de Failover ou em uma configuração do Grupo de Disponibilidade.

Se estiver usando o SQL Server 2012 (11.x) por meio do SQL Server 2017 (14.x) e o SQL Server Configuration Manager para SQL Server 2019 (15.x) não estiver disponível, siga as etapas na seção Provisionar (instalar) um certificado em um único servidor para cada servidor.

Exportar certificado do servidor

  1. No snap-in de Certificados , localize o certificado na pasta Certificados / Pessoal , clique com o botão direito do mouse em Certificado, aponte para Todas as Tarefas e clique em Exportar.

  2. Complete o Assistente para Exportação de Certificados armazenando o arquivo de certificado em um local conveniente.

Configurar servidor

Configure o servidor para forçar conexões criptografadas.

Importante

A conta de serviço do SQL Server precisa ter permissões de leitura no certificado usado para forçar a criptografia no SQL Server. Para uma conta de serviço sem privilégios, as permissões de leitura precisarão ser adicionadas ao certificado. Deixar de fazer isso pode resultar na falha da reinicialização do serviço do SQL Server.

  1. No SQL Server Configuration Manager, expanda Configuração de Rede do SQL Server, clique com o botão direito do mouse em Protocolos para <server instance> e selecione Propriedades.

  2. Na caixa de diálogo Propriedades de Protocolos para <instance name> , na guia Certificado, selecione o certificado desejado na lista suspensa da caixa Certificado e clique em OK.

  3. Na guia Sinalizadores , na caixa ForceEncryption , selecione Sim e clique em OK para fechar a caixa de diálogo.

  4. Reinicie o serviço SQL Server .

Observação

Para garantir a conectividade segura entre o cliente e o servidor, configure o cliente para solicitar conexões criptografadas. Mais detalhes são explicados mais adiante neste artigo.

Configurar cliente

Configure o cliente para solicitar conexões criptografadas.

  1. Copie o certificado original ou o arquivo de certificado exportado no computador cliente.

  2. No computador cliente, use o snap-in de Certificados para instalar o certificado raiz ou o arquivo do certificado exportado.

  3. Usando o SQL Server Configuration Manager, clique com o botão direito do mouse em Configuração do SQL Server Native Client e clique em Propriedades.

  4. Na página Sinalizadores , na caixa Forçar criptografia de protocolo , clique em Sim.

Usar o SQL Server Management Studio

Para criptografar uma conexão de SQL Server Management Studio:

  1. Na barra de ferramentas do Pesquisador de Objetos, clique em Conectar e clique em Mecanismo de Banco de Dados.

  2. Na caixa de diálogo Conectar ao Servidor , complete as informações de conexão e clique em Opções.

  3. Na guia Propriedades de Conexão , clique em Criptografar conexão.

Protocolo IPsec

O SQL Server pode ser criptografado durante a transmissão usando o IPSec. O IPSec é fornecido pelos sistemas operacionais do cliente e servidor e não requer nenhuma configuração do SQL Server. Para obter informações sobre o IPSec, consulte a documentação de rede ou do Windows.

Próximas etapas