Criptografando conexões com o SQL Server

O SQL Server oferece suporte ao protocolo SSL e é compatível com o protocolo IPSec.

Protocolo SSL

O Microsoft SQL Server pode usar SSL para criptografar dados transmitidos em uma rede entre uma instância do SQL Server e um aplicativo cliente. A criptografia SSL é executada na camada do protocolo e está disponível para todos os clientes do SQL Server, exceto para cliente da Biblioteca de Banco de Dados e do MDAC 2.53.

O SSL 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 SSL, 40 ou 128 bits, depende da versão do sistema operacional Microsoft Windows em execução no aplicativo e dos computadores do banco de dados.

A habilitação da criptografia SSL aumenta a segurança dos dados transmitidos pelas redes entre instâncias do SQL Server e aplicativos. Porém, a habilitação da criptografia reduz o desempenho. Quando todo o tráfego entre o SQL Server e um aplicativo cliente é criptografado usando SSL, 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 Biblioteca de Rede do cliente e descriptografados pela Biblioteca de Rede do servidor.

  • Os pacotes enviados da instância do SQL Server para o aplicativo devem ser criptografados pela Biblioteca de Rede do servidor e descriptografados pela Biblioteca de Rede do cliente.

Configurando SSL para o SQL Server

O seguinte procedimento descreve como configurar o SSL para o SQL Server.

Para configurar o SSL

  1. Instale um certificado no repositório de certificado do Windows do computador servidor.

  2. Clique em Iniciar, no grupo de programas Microsoft SQL Server , aponte para Ferramentas de Configuração e clique em SQL Server Configuration Manager.

  3. Expanda Configuração de Rede do SQL Server, clique com o botão direito do mouse nos protocolos do servidor desejados e clique em Propriedades.

    ObservaçãoObservação

    Esta é a seção Protocolos para<instance_name> no painel esquerdo da ferramenta, e não um protocolo específico no painel direito.

  4. Na guia Certificado, configure o Mecanismo de Banco de Dados para usar o certificado.

  5. Na guia Sinalizadores, exiba ou especifique a opção de criptografia do protocolo. O pacote de logon sempre será criptografado.

    • Quando a opção ForceEncryption do Mecanismo de Banco de Dados é definida como Yes, toda comunicação cliente/servidor é criptografada e o acesso é negado aos clientes que não podem oferecer suporte à criptografia.

    • Quando a opção ForceEncryption do Mecanismo de Banco de Dados é definida como No, a criptografia pode ser solicitada pelo aplicativo cliente, mas não é exigida.

    • O SQL Server deve ser reiniciado depois que você alterar a definição de ForceEncryption.

    As credenciais (no pacote de logon) transmitidas quando um aplicativo cliente se conecta ao SQL Server são sempre criptografadas. O SQL Server usará um certificado de uma autoridade de certificação confiável, se disponível. Se um certificado confiável não estiver instalado, o SQL Server irá gerar um certificado autoassinado quando a instância for iniciada e usará esse certificado para criptografar as credenciais. Esse certificado autoassinado ajuda a aumentar a segurança, mas não fornece proteção contra identidade lograda pelo servidor. Se o certificado autoassinado for usado e o valor da opção ForceEncryption for definido como Yes, todos os dados transmitidos por uma rede entre o SQL Server e o aplicativo cliente serão criptografados usando o certificado autoassinado.

    Observação sobre cuidadosCuidado

    As conexões SSL que são 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 SSL usando certificados autoassinados em um ambiente de produção ou em servidores conectados à Internet.

Requisitos de certificado

Para que o SQL Server carregue um certificado SSL, 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 hora do sistema atual deve ser posterior à propriedade Valid from do certificado e anterior à propriedade Valid to do certificado.

  • O certificado deve ser significativo para a autenticação do servidor. Isto requer que a propriedade Enhanced Key Usage do certificado especifique Server Authentication (1.3.6.1.5.5.7.3.1).

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

  • A propriedade Subject do certificado deve indicar que o CN (nome comum) é igual ao nome do host ou ao FQDN (nome de domínio totalmente qualificado) do computador servidor. 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 Native Client oferecem suporte a certificados curinga. Outros clientes podem não oferecer suporte a certificados curinga. Para obter mais informações, consulte a documentação do cliente e o artigo KB258858.

Requisitos do certificado do SQL Server Native Client

Aplicativos que utilizam "SERVER=shortname; ENCRYPT=yes" com certificados cujos Subjects especificam FQDNs (nomes de domínios totalmente qualificados) se conectaram antes devido à validação reduzida. O SQL Server 2008 R2 aprimora a segurança impondo uma correspondência exata dos assuntos para certificados. Os aplicativos que dependem de validação reduzida devem executar uma das seguintes ações:

  • Use o FQDN na cadeia de caracteres de conexão.

    • Esta opção não exigirá recompilação do aplicativo se a palavra-chave SERVER da cadeia de caracteres de conexão for configurada fora do aplicativo.

    • Esta opção não funciona para aplicativos que têm as cadeias de conexão embutidas no código.

    • Esta opção não funciona para aplicativos que usam Espelhamento de Banco de Dados porque o servidor espelhado responde com um nome simples.

  • Adicione um alias para o nome curto mapear para o FQDN.

    • Esta opção funciona mesmo para aplicativos que têm as cadeias de conexão embutidas no código.

    • Esta opção não funciona para aplicativos que usam Espelhamento de Banco de Dados já que os provedores não procuram aliases para nomes de parceiro de failover recebidos.

  • Tenha um certificado emitido para nome curto.

    • Esta opção funciona para todos os aplicativos.

Criptografia em um cluster

Se você desejar usar a criptografia com um cluster de failover, deverá instalar o certificado de servidor com o nome DNS totalmente qualificado da instância clusterizada de failover em todos os nós do cluster de failover. Por exemplo, se você tiver um cluster de dois nós, com os nós denominados test1.your company.com e test2. your company.com e uma instância clusterizada de failover do SQL Server denominada fcisql, deverá obter um certificado para fcisql.your company.com e instalar esse certificado em ambos os nós. Para configurar o cluster de failover para criptografia, você poderá selecionar a caixa de opções ForceEncryption na caixa de propriedades Protocolos do <servidor> da Configuração de Rede do SQL Server.

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.