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:
- Certificado Autoassinado: O servidor está utilizando um certificado que não foi assinado por uma Autoridade Certificadora (CA) confiável.
- Configuração do Ambiente: O ambiente de desenvolvimento (como VSCode) pode não estar configurado para confiar em certificados autoassinados.
- Rede Corporativa: Em redes corporativas, firewalls ou proxies podem estar interferindo na verificação de certificados.
- 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.
- Abra o terminal ou prompt de comando.
- Instale a biblioteca com o seguinte comando:
bash
pip install pip-system-certs - 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.
- 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:
- Instale a extensão
win-cano VSCode. - Após a instalação, ajuste as configurações da extensão para o modo “append”:
- Vá para as configurações do
win-cae altere o modo de “inject” para “append”. - 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.
- Instale a extensão através do marketplace do VSCode.
- 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:
- 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.

コメント