Erro "O certificado recebido do servidor remoto foi emitido por uma autoridade de certificação não confiável" quando você se conecta ao SQL Server
Este artigo ajuda você a resolver o problema que ocorre quando você tenta fazer uma conexão criptografada com o SQL Server.
Versão original do produto: SQL Server
Número original do KB: 2007728
Sintomas
Ao se conectar ao SQL Server, você poderá receber a seguinte mensagem de erro:
Uma conexão com o servidor foi estabelecida com êxito, mas ocorreu um erro durante o processo de logon. (provedor: Provedor SSL, erro: 0 – A cadeia de certificados foi emitida por uma autoridade que não é confiável.) (Provedor de dados .Net SqlClient)
Além disso, a seguinte mensagem de erro é registrada no log de eventos do Sistema do Windows.
Log Name: System
Source: Schannel
Date: 10/13/2020 3:03:31 PM
Event ID: 36882
Task Category: None
Level: Error
Keywords:
User: USERNAME
Computer: COMPUTERNAME
Description:
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.
Motivo
Esse erro ocorre quando você tenta fazer uma conexão criptografada com o SQL Server usando um certificado não verificável. Isso pode acontecer nos seguintes cenários:
Cenário | Criptografia no servidor | Criptografia do lado do cliente | Tipo de certificado | Autoridade de emissão de certificados presente no repositório de autoridades de certificação raiz confiáveis |
---|---|---|---|---|
1 | Sim | No | Você provisiona um certificado de uma fonte não confiável (a autoridade emissora do certificado não está listada como uma autoridade confiável em Autoridades de Certificação Raiz Confiáveis no computador cliente) | Não |
2 | Desativado | Sim | Certificado autogerado do SQL Server | Os certificados autoassinados não aparecem neste repositório. |
Ao estabelecer conexões criptografadas com o SQL Server, o Schannel (Canal seguro) cria a lista de autoridades de certificação confiáveis pesquisando o repositório de autoridades de certificação raiz confiáveis no computador local. Durante o handshake TLS, o servidor envia seu certificado de chave pública ao cliente. O emissor de um certificado de chave pública é conhecido como uma Autoridade de Certificação (CA). O cliente precisa garantir que a autoridade de certificação seja aquela em que o cliente confia. Isso é feito conhecendo a chave pública de ACs confiáveis com antecedência. Quando o Schannel detecta um certificado que foi emitido por uma autoridade de certificação não confiável, como nos dois casos anteriores, você recebe a mensagem de erro listada na seção Sintomas .
Resolução
Se você usar intencionalmente um certificado de autoridade não confiável ou um certificado autoassinado para criptografar conexões com o SQL Server, poderá usar uma das seguintes opções:
Para o cenário 1, adicione a autoridade de certificação ao repositório de Autoridades de Certificação Raiz Confiáveis no computador cliente que inicia a conexão criptografada. Para fazer isso, conclua os procedimentos Exportar o certificado do servidor e Instalar a autoridade de certificação (CA) raiz no computador cliente listados nas próximas seções dessa sequência.
Exportar o certificado de servidor
O exemplo usa um arquivo chamado caCert.cer como um arquivo de certificado. Você deve obter este arquivo de certificado do servidor. As etapas seguintes explicam como exportar o certificado do servidor para um arquivo:
Clique em Iniciar e Executar e digite MMC. (MMC é um acrônimo para o Console de Gerenciamento Microsoft.)
No MMC, abra os Certificados.
Expanda Pessoal e, em seguida, Certificados.
Clique com o botão direito do mouse no certificado do servidor e selecione Todas as Tarefas-Exportar>.
Clique em Avançar para passar pela caixa de diálogo de boas-vindas do Assistente para Exportação de Certificados.
Confirme se Não, não exportar a chave privada está selecionado e selecione Avançar.
Verifique se o binário X.509 codificado por DER (.CER) ou X.509 codificado em Base 64 (.CER) está selecionado e clique em Avançar.
Insira um nome do arquivo de exportação.
Clique em Avançar e em Concluir para exportar o certificado.
Instalar a AC (autoridade de certificação) raiz no computador cliente
Inicie o snap-in Certificados para MMC no computador cliente e adicione o snap-in Certificados.
Na caixa de diálogo Snap-in Certificados, selecione Conta de computador e, em seguida, selecione Avançar.
No painel Selecionar Computador, selecione Computador local: (o computador em que este console está sendo executado) e selecione Concluir.
Escolha OK para fechar a caixa de diálogo Adicionar ou Remover Snap-ins .
No painel esquerdo do MMC, expanda o nó Certificados (Computador Local).
Expanda o nó Autoridades de Certificação Raiz Confiáveis, clique com o botão direito do mouse na subpasta Certificados , selecione Todas as Tarefas e, em seguida, selecione Importar.
No Assistente de Importação de Certificado, na página Bem-vindo, selecione Avançar.
Na página Arquivo a Importar , selecione Procurar.
Navegue até o local do arquivo de certificado caCert.cer , selecione o arquivo e, em seguida, selecione Abrir.
Na página Arquivo a ser importado , selecione Avançar.
Na página Repositório de Certificados, aceite a seleção padrão e selecione Avançar.
Na página Concluindo o Assistente de Importação de Certificado , selecione Concluir.
Para os cenários 1 e 2, defina a configuração Certificado do Servidor Confiável como true em seu aplicativo cliente.
Para obter mais informações sobre como fazer isso, consulte os seguintes tópicos:
Usando criptografia sem validação no SQL Server Native Client
Conectando-se com criptografia usando o driver Microsoft JDBC para SQL Server
Observação
Se você estiver se conectando ao SQL Server com o SQL Server Management Studio, selecione a guia Opções na janela Conectar-se ao Servidor e, em seguida, selecione a opção Certificado do servidor confiável.
Cuidado: as conexões SSL criptografadas usando um certificado autoassinado não fornecem segurança forte. Elas são suscetíveis a ataques de man-in-the-middle
. Você não deve depender do SSL usando certificados autoassinados em um ambiente de produção ou em servidores conectados à Internet.
Se a configuração discutida nas seções anteriores deste artigo não for intencional, você poderá usar uma das seguintes opções para resolver esse problema:
Configurar o mecanismo de banco de dados para usar a criptografia de acordo com o procedimento em Habilitar conexões criptografadas com o Mecanismo de Banco de Dados.
Se a criptografia não for necessária:
Desabilite as configurações de criptografia (se houver) no aplicativo cliente.
Desabilite a criptografia do lado do servidor usando o SQL Server Configuration Manager. Para obter mais informações sobre como fazer isso, consulte Configurar servidor.