Como Corrigir o Erro failed (self signed certificate in c…

スポンサーリンク

Erro “failed (self signed certificate in certificate chain)”

Visão Geral do Erro

O erro “failed (self signed certificate in certificate chain)” ocorre quando um cliente tenta estabelecer uma conexão segura (SSL/TLS) com um servidor, mas não consegue validar o certificado do servidor, que é autoassinado. Isso significa que o certificado não é confiável pela cadeia de confiança padrão do sistema operacional ou da biblioteca que está sendo utilizada.

Esse problema é comum em ambientes de desenvolvimento e pode ocorrer em várias linguagens de programação, incluindo Python, Java e em ferramentas como Git e VSCode.

Causas Comuns

As causas mais comuns para o erro “failed (self signed certificate in certificate chain)” incluem:

  1. Certificado Autoassinado: O servidor está utilizando um certificado que não foi assinado por uma Autoridade Certificadora (CA) confiável.
  2. Configuração do Ambiente: O ambiente de desenvolvimento (como VSCode) pode não estar configurado para confiar em certificados autoassinados.
  3. Rede Corporativa: Em redes corporativas, firewalls ou proxies podem estar interferindo na verificação de certificados.
  4. Bibliotecas Desatualizadas: Algumas bibliotecas podem não estar atualizadas e, portanto, não reconhecem os novos certificados de CA.

Métodos de Solução

Método 1: Usar pip-system-certs

Uma solução recomendada é utilizar a biblioteca pip-system-certs, que permite que o Python reconheça os certificados do sistema.

  1. Abra o terminal ou prompt de comando.
  2. Instale a biblioteca com o seguinte comando:
    bash
    pip install pip-system-certs
  3. Após a instalação, seu código deve funcionar corretamente. Esta biblioteca substitui a necessidade de usar python-certifi-win32, que não é mais mantida.

Método 2: Ignorar a Verificação de Certificados

Se você está em um ambiente de desenvolvimento e entende os riscos, pode optar por ignorar a verificação de certificados.

  1. Adicione o seguinte código ao início do seu arquivo Python:
    “`python
    import ssl

try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
pass # Legacy Python that doesn’t verify certificates
else:
ssl._create_default_https_context = _create_unverified_https_context
“`

Este código cria um contexto HTTPS que ignora a verificação de certificados, permitindo conexões com servidores que utilizam certificados autoassinados.

Método 3: Atualizar VSCode e Certificados

Se você estiver utilizando o VSCode, a instalação do win-ca pode resolver o problema:

  1. Instale a extensão win-ca no VSCode.
  2. Após a instalação, ajuste as configurações da extensão para o modo “append”:
  3. Vá para as configurações do win-ca e altere o modo de “inject” para “append”.
  4. Reinicie o VSCode.

Método 4: Configurar Certificados no MacOS

Para usuários de MacOS, a extensão linhmtran168.mac-ca-vscode pode ser útil. Esta extensão é semelhante ao win-ca e ajuda a reconhecer certificados autoassinados.

  1. Instale a extensão através do marketplace do VSCode.
  2. Siga as instruções de configuração fornecidas na documentação da extensão.

Método 5: Verificar Certificados com OpenSSL

Outra abordagem é usar a ferramenta OpenSSL para diagnosticar problemas de certificado:

  1. Execute o seguinte comando no terminal:
    bash
    openssl s_client -connect <hostname>:443 -state -debug

    Substitua <hostname> pelo nome do servidor que você está tentando acessar.

Esta ferramenta irá fornecer informações detalhadas sobre a conexão e os certificados utilizados.

Dicas de Prevenção

Para evitar que o erro “failed (self signed certificate in certificate chain)” ocorra no futuro, considere as seguintes dicas:

  • Sempre utilize certificados emitidos por uma CA confiável em ambientes de produção.
  • Mantenha suas bibliotecas e ferramentas atualizadas para garantir a compatibilidade com novos certificados.
  • Configure corretamente seu ambiente de desenvolvimento para lidar com certificados autoassinados, se necessário.

Resumo

O erro “failed (self signed certificate in certificate chain)” é um problema comum relacionado à validação de certificados SSL/TLS. As soluções incluem o uso de bibliotecas específicas, ignorar verificações de certificados em ambientes de desenvolvimento, e configurar corretamente ferramentas como VSCode. Seguindo as etapas e dicas apresentadas, você poderá resolver esse erro e evitar que ele ocorra no futuro.

コメント

タイトルとURLをコピーしました