Requisitos de certificado do SQL Server

Este artigo descreve os requisitos de certificado do SQL Server e como verificar se um certificado atende a esses requisitos.

Requisitos de certificado para criptografia do SQL Server

Para usar o TLS para criptografia do SQL Server, você precisa provisionar um certificado (um dos três tipos digitais) que atenda às seguintes condições:

  • O certificado deve estar no repositório de certificados do computador local ou da conta de serviço do SQL Server. Recomendamos o repositório de certificados do computador local, pois ele evita a necessidade de reconfiguração de certificados quando há alterações na conta de inicialização do SQL Server.

  • A conta de serviço do SQL Server precisa ter as permissões necessárias para acessar o certificado TLS. Para obter mais informações, confira Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões.

  • A hora atual do sistema deve ser posterior ao valor da propriedade do certificado Válido de e anterior ao valor da propriedade do certificado Válido até. Para obter mais informações, confira Certificados expirados.

    Observação

    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 que usa um Provedor de Armazenamento Criptográfico herdado para armazenar a chave privada. Normalmente, a propriedade de uso de chave do certificado (KEY_USAGE) também inclui a codificação de chaves (CERT_KEY_ENCIPHERMENT_KEY_USAGE) e uma assinatura digital (CERT_DIGITAL_SIGNATURE_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 provisionados em todos os nós do cluster de failover. Por exemplo, se você tiver um cluster de dois nós chamados test1.*<your company>*.com e test2.*<your company>*.com, e um servidor virtual chamado virtsql, precisará instalar um certificado para virtsql.*<your company>*.com em ambos os nós. Para obter mais informações sobre clusters SQL, confira Antes de instalar o clustering de failover.

  • Ao se conectar com um ouvinte do grupo de disponibilidade, os certificados provisionados para cada nó de servidor participante do cluster de failover também devem ter uma lista de todos os ouvintes do grupo de disponibilidade definidos no Nome Alternativo da Entidade do certificado. Para obter mais informações, confira Ouvintes e certificados TLS/SSL. Para obter mais informações sobre o recurso Always On do SQL, confira Conectar-se a um ouvinte do grupo de disponibilidade Always On.

  • O Nome Alternativo da Entidade deve incluir todos os nomes que seus clientes podem usar para se conectar a uma instância do SQL Server. Se estiver usando grupos de disponibilidade, o Nome Alternativo da Entidade deverá incluir o NetBIOS e o nome de domínio totalmente qualificado (FQDN) do localhost e dos ouvintes criados.

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 tiver sido 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 tiver assinado o certificado do servidor em cada cliente que vai se conectar ao SQL Server.

Importante

O SQL Server não será iniciado se houver um certificado no repositório de computadores, mas que atenda apenas a alguns requisitos na lista acima e se ele for configurado manualmente para uso pelo SQL Server Configuration Manager ou por meio de entradas do Registro. Selecione outro certificado que atenda a todos os requisitos ou remova o certificado para que não seja usado pelo SQL Server até que você possa provisionar outro certificado que atenda aos requisitos, ou usar um certificado gerado automaticamente, conforme discutido em Certificados autoassinados gerados pelo SQL Server.

Verificar se um certificado atende aos requisitos

No SQL Server 2019 (15.x) e versões posteriores, o SQL Server Configuration Manager valida automaticamente todos os requisitos de certificado durante a própria fase de configuração. Se o SQL Server for iniciado com êxito após a configuração de um certificado, é um sinal de que o SQL Server pode usar esse certificado. Mas alguns aplicativos cliente ainda podem ter outros requisitos para certificados que podem ser usados para criptografia, e podem ocorrer diferentes erros dependendo do aplicativo que está sendo usado. Nesse cenário, você precisa verificar a documentação de suporte do aplicativo cliente para obter mais informações sobre o assunto.

É possível usar um dos seguintes métodos para verificar a validade do certificado para uso com o SQL Server:

  • Ferramenta sqlcheck: sqlcheck é uma ferramenta de linha de comando que examina as configurações atuais do computador e da conta de serviço e gera um relatório de texto na janela do Console, que é útil para a solução de problemas de vários erros de conexão. A saída tem as seguintes informações sobre certificados:

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    Para obter mais informações sobre os recursos da ferramenta e para obter instruções de download, confira Bem-vindo ao wiki do CSS_SQL_Networking_Tools.

  • Ferramenta certutil: certutil.exe é um programa de linha de comando instalado como parte dos Serviços de Certificados. Você pode usar o certutil.exe para despejar e exibir informações de certificado. Use a opção -v para obter informações detalhadas. Para obter mais informações, consulte certutil.

  • Snap-in de certificados: você também pode usar a janela Snap-in de certificados para exibir mais informações sobre os certificados em vários repositórios de certificados do computador. Mas essa ferramenta não mostra informações sobre KeySpec. Para obter mais informações sobre como exibir certificados com o snap-in do MMC, confira Como exibir certificados com o snap-in do MMC.

Mais informações

Certificados expirados

O SQL Server verifica apenas a validade dos certificados no momento da configuração. Por exemplo, não será possível usar o Configuration Manager no SQL Server 2019 (15.x) e versões posteriores para provisionar um certificado expirado. O SQL Server continua a ser executado sem problemas se o certificado expirar após ser provisionado. Mas alguns aplicativos cliente, como o Power BI, verificam a validade do certificado a cada conexão e emitem erros se a instância do SQL Server estiver configurada para usar um certificado expirado para criptografia. Recomendamos que não use um certificado expirado para criptografia do SQL Server.