Partilhar via


Requisitos de certificado para o SQL Server

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

Requisitos de certificado para criptografia do SQL Server

Para usar o Transport Layer Security (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 armazenamento de certificados do computador local ou no armazenamento de certificados da conta de serviço do SQL Server. Recomendamos o armazenamento de certificados do computador local, pois ele evita a reconfiguração de certificados com alterações na conta de inicialização do SQL Server.

  • A conta de serviço do SQL Server deve ter a permissão necessária para acessar o certificado TLS. Para obter mais informações, consulte Configurar o Mecanismo de Banco de Dados do SQL Server para criptografar conexões.

  • A hora atual do sistema deve ser após o valor da propriedade Valid de e antes do valor da propriedade Valid para do certificado. Para obter mais informações, consulte Certificados expirados.

    Observação

    O certificado deve ser destinado à autenticação do servidor. Isso requer 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 KeySpec opção de AT_KEYEXCHANGE. Isso requer um certificado que use um provedor de armazenamento criptográfico herdado para armazenar a chave privada. Normalmente, a propriedade de uso de chave (KEY_USAGE) do certificado também inclui codificação de chave (CERT_KEY_ENCIPHERMENT_KEY_USAGE) e uma assinatura digital (CERT_DIGITAL_SIGNATURE_KEY_USAGE).

  • A propriedade Subject do certificado deve indicar que o nome comum (CN) é o mesmo que o nome de host ou FQDN (nome de domínio totalmente qualificado) do computador servidor. Quando você usa o nome do host, o sufixo DNS deve ser especificado no certificado. Se o SQL Server estiver sendo executado em um cluster de failover, o nome comum deverá corresponder ao nome do host ou 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, com nós nomeados 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 em ambos os nós. Para obter mais informações sobre clusters SQL, consulte Antes de instalar o cluster de alta disponibilidade.

  • Quando você se conecta a um ouvinte de grupo de disponibilidade, os certificados provisionados para cada nó de servidor participante no cluster de failover também devem ter uma lista de todos os ouvintes do grupo de disponibilidade definida no Nome Alternativo da Entidade do certificado. Para obter mais informações, consulte Ouvintes e certificados TLS/SSL. Para obter mais informações sobre o SQL Always On, consulte Conectar-se a um ouvinte de 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 FQDN (Nome de Domínio Totalmente Qualificado) do host local e dos ouvintes criados.

O cliente deve ser capaz de 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 do servidor, nenhuma configuração adicional será necessária. O 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, você deve instalar o certificado de chave pública da autoridade de certificação que assinou o certificado do servidor em cada cliente que vai se conectar ao SQL Server.

Importante

O SQL Server não se iniciará se existir um certificado no armazenamento do computador que atenda apenas a alguns dos requisitos da lista acima e esteja configurado manualmente para uso pelo SQL Server Configuration Manager ou através de entradas no Registro. Selecione outro certificado que atenda a todos os requisitos ou remova o certificado de ser usado pelo SQL Server até que você possa provisionar um que atenda aos requisitos ou usar um certificado autogerado, conforme discutido em Certificados autoassinados gerados pelo SQL Server.

Verificar se um certificado cumpre os 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 depois de configurar um certificado, é uma boa indicação 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 você pode enfrentar erros diferentes, 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.

Você pode usar um dos seguintes métodos para verificar a validade do certificado para uso com o SQL Server:

  • sqlcheck tool: sqlcheck é uma ferramenta de linha de comando que examina as configurações atuais do computador e da conta de serviço e produz um relatório de texto para a janela Console que é útil para solucionar 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 instruções de download, consulte Bem-vindo ao wiki 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 certutil.exe para despejar e exibir informações de certificado. Use a -v opção para obter informações detalhadas. Para obter mais informações, consulte certutil.

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

Mais informações

Certificados expirados

O SQL Server só verifica a validade dos certificados no momento da configuração. Por exemplo, você não pode usar o Configuration Manager no SQL Server 2019 (15.x) e versões posteriores para provisionar um certificado expirado. O SQL Server continuará a ser executado sem problemas se o certificado expirar depois de já ter sido provisionado. Mas, alguns aplicativos cliente, como o Power BI, verificam a validade do certificado em cada conexão e geram um erro se a instância do SQL Server estiver configurada para usar um certificado expirado para criptografia. Recomendamos que você não use um certificado expirado para criptografia do SQL Server.