Falha na verificação do certificado aparece quando o python baixa recursos https

Ao baixar pesos de modelo recentemente, apareceu a seguinte mensagem de erro: urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)>, o problema do erro é que a verificação do certificado falhou.Essa situação ocorre quando o site usa um certificado autoassinado ou há um problema com o certificado raiz do sistema.

razão:

Desde a versão 2.7.9, o Python habilitou a função de verificação de certificado do servidor por padrão. Se a verificação do certificado falhar, as operações subsequentes serão rejeitadas; isso pode impedir ataques man-in-the-middle e permitir que o cliente garanta que o servidor está na verdade, quem afirma ser. Se for um certificado autoassinado, porque o certificado CA do sistema geral não contém o conteúdo do certificado CA autoassinado, a verificação do certificado falha.

solução

1: Desligue a função de verificação do certificado do servidor através da configuração variável do departamento de meio ambiente

Execute o seguinte comando shell (supondo que você esteja usando o shell bash, zsh é o mesmo):

echo "export PYTHONHTTPSVERIFY=0" >> ~/.bashrc
source ~/.bashrc
echo "export PYTHONHTTPSVERIFY=0" >> ~/.zshrc
source ~/.zshrc

2: Cancele a função de verificação do certificado do servidor (impacto global)

No início do arquivo, adicione o seguinte código:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

3: Crie um parâmetro de contexto que cancela a verificação do certificado do servidor (afetado pelo código de solicitação atual)

Um exemplo de uso é o seguinte:

import ssl
context = ssl._create_unverified_context()
urllib.urlopen('https://www.baidu.com', context=context)

4: Defina o parâmetro de verificação de solicitações como Falso para cancelar a função de verificação

Um exemplo de uso é o seguinte:

import requests
requests.get(url, verify=False) 

5: Especifique manualmente o certificado CA (Python3)

Um exemplo de uso é o seguinte:

import urllib
urllib.request.urlopen("https://example.com/some/info", cafile="ca.pem")

Quando houver um problema com o certificado raiz do sistema, você pode usar o certificado CA fornecido pela certifi:

import certifi
import urllib
urllib.request.urlopen('https://example.com/bar/baz.html',
cafile=certifi.where())

Acho que você gosta

Origin blog.csdn.net/weixin_45277161/article/details/130865055
Recomendado
Clasificación