AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1426277
Accepted
mac
mac
Asked: 2019-04-17 13:52:31 +0800 CST2019-04-17 13:52:31 +0800 CST 2019-04-17 13:52:31 +0800 CST

ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

  • 772

Estou usando o Python 3.7.3 para executar uma solicitação GET para um arquivo PHP hospedado em meu site. No entanto, quando o executo, recebo o erro abaixo. Eu instalei requestsatravés pip3do Homebrew. Estou usando macOS Mojave.

Traceback (última chamada mais recente):
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", linha 600, em urlopen chunked=chunked)
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", linha 343, em _make_request self._validate_conn(conn)
Arquivo "/Library/Frameworks/Python .framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", linha 839, em _validate_conn conn.connect()
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib /python3.7/site-packages/urllib3/connection.py", linha 344, em conectar ssl_context=context)
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/util/ssl_.py", linha 344, em ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", linha 412, in wrap_socket session=session
File "/Library/Frameworks/Python.framework/Versions/3.7/lib /python3.7/ssl.py", linha 853, em _create self.do_handshake()
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", linha 1117, em do_handshake self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] falha na verificação do certificado: não foi possível obter o certificado do emissor local (_ssl.c:1056)

Durante o tratamento da exceção acima, outra exceção ocorreu:

Traceback (última chamada mais recente):
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/adapters.py", linha 449, em send timeout=timeout
Arquivo " /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", linha 638, em urlopen _stacktrace=sys.exc_info()[2])
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/util/retry.py", linha 398, em incrementos raise MaxRetryError(_pool, url, error ou ResponseError( cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='ijetlab.com', port=443): Máximo de tentativas excedido com url: /api/api.php?one=1&two=2 (causado por SSLError(SSLCertVerificationError(1 , '[SSL: CERTIFICATE_VERIFY_FAILED] falha na verificação do certificado: não foi possível obter o certificado do emissor local (_ssl.c:1056)')))

Durante o tratamento da exceção acima, outra exceção ocorreu:

Traceback (última chamada mais recente):
Arquivo "/Users/maxwellnewberry/Documents/test.py", linha 12, in r = requests.get(url = URL, params = PARAMS)
Arquivo "/Library/Frameworks/Python.framework /Versions/3.7/lib/python3.7/site-packages/requests/api.py", linha 75, in get return request('get', url, params=params, **kwargs)
File "/Library/Frameworks /Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/api.py", linha 60, na solicitação return session.request(method=method, url=url, **kwargs)
Arquivo " /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/sessions.py", linha 533, na solicitação resp = self.send(prep, **send_kwargs)
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/sessions.py", linha 646, em send r = adapter.send(request, **kwargs)
Arquivo "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/adapters.py", linha 514, em send raise SSLError(e, request=request) requests.exceptions.SSLError : HTTPSConnectionPool(host='ijetlab.com', port=443): Máximo de tentativas excedido com url: /api/api.php?one=1&two=2 (Causado por SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificado falha na verificação: não foi possível obter o certificado do emissor local (_ssl.c:1056)')))

Aqui está o código:

# importing the requests library 
import requests 

# api-endpoint 
URL = "https://ijetlab.com/api/api.php"


# defining a params dict for the parameters to be sent to the API 
PARAMS = {'one':1, 'two':2} 

# sending get request and saving the response as response object 
r = requests.get(url = URL, params = PARAMS) 

# extracting data in json format 
data = r.json()

print(data['response'])

Todas as pesquisas me disseram para executar 'Install Certificates.command', e eu executei – cerca de 100 vezes. Também fiz os certificados de instalação do cliente.

python
  • 4 4 respostas
  • 115658 Views

4 respostas

  • Voted
  1. Best Answer
    Anaksunaman
    2019-04-18T07:18:38+08:002019-04-18T07:18:38+08:00

    TL;DR

    O site remoto parece ser o problema, não o Python. Provavelmente não há correção para isso além de corrigir o site.

    Explicação mais longa

    O site/servidor com o qual você está lidando aparentemente está configurado incorretamente. Isso não tem nada a ver diretamente com o Python. Dito isso, você pode ignorar quaisquer erros de certificado com, por exemplo:

    r = requests.get(url=URL, params=PARAMS, verify=False)
    

    ou você pode tentar apontar o Python para os certificados ausentes (como apontado por @dave_thompson_085 nos comentários).

    No entanto, é improvável que isso seja bom, pois o servidor aparentemente responde com um 500: Internal Server Error(verificado com curl) e um Content-Length: 0, o que parece indicar um erro no processamento de api.phpsi mesmo (ou seja, não há JSON para processar de qualquer maneira).

    • 23
  2. Foggy
    2022-05-24T13:29:43+08:002022-05-24T13:29:43+08:00

    Se você estiver trabalhando em um ambiente corporativo que descriptografa seu tráfego, ou possivelmente servidores proxy como parte de uma VPN, descobri que a certifibiblioteca não inclui o certificado para o servidor de descriptografia no pacote de certificados. Isso deixa você com apenas 1 solução boa, 1 solução medíocre e 1 solução ruim. A má solução é não verificar os certificados. A solução medíocre é pedir ao seu departamento de TI para colocar na lista de permissões o site que você está tentando entrar em contato, mas você terá que pedir repetidamente para cada novo site que tentar entrar em contato.

    Há um artigo muito bom sobre esse assunto de David Tippet no link a seguir. https://levelup.gitconnected.com/fixing-your-ssl-verify-errors-in-python-71c2201db4b2

    Então, qual é a boa solução? Você terá que começar encontrando alguém em seu departamento de TI que possa fornecer a URL ou o endereço IP do seu servidor de descriptografia SSL, ou você pode pedir a eles que forneçam o arquivo .pem em um formato base64 para o servidor. Este é um arquivo de texto claro legível por humanos e se parece com isto:

    Exemplo de certificado

    Ele terá 7 linhas começando com um comentário #, uma linha que diz -----BEGIN CERTIFICATE-----e uma linha que termina como -----END CERTIFICATE-----.

    Abra seu ambiente python e verifique se você tem certificom o comando:

    import certifi

    Em seguida, descubra onde está a cadeia de certificados em seu computador que o Python está usando com

    certifi.where()

    Navegue até o caminho do arquivo retornado por certifi.where()e faça uma cópia desse arquivo caso quebre algo. O meu estava localizado aqui:

    'C:\Users\user_name\Anaconda3\envs\gispy\lib\site-packages\certifi\cacert.pem'

    Abra esse arquivo .txt e copie e cole todo o certificado para seu servidor proxy/descriptografia no final do cacert.pemarquivo. Agora sua requestschamada deve funcionar.

    • 2
  3. Sakyataksis
    2019-09-30T13:46:07+08:002019-09-30T13:46:07+08:00

    Não acho que o servidor seja necessariamente o problema. Estou fazendo algo semelhante, mas minhas duas primeiras linhas são as seguintes.

    importar pandas como pd

    BCD = pd.read_csv(' https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer/breast-cancer.data ')

    Estou fazendo isso simultaneamente no MacBook Pro com Mojave 10.14.6 e em um Microsoft Surface com Windows 10 Enterprise, 10.0.17134, ambos usando Jupyter. Minha instalação do Python é 3.7.3 em ambos.

    Ambos estão acessando a Internet pelo mesmo Wi-Fi doméstico.

    O Surface pegou na primeira tentativa. O MacBook me dá o mesmo erro que o OP.

    Portanto, não é provável que o servidor do banco de dados UCI seja o problema.

    • 1
  4. Edgar W. Iparraguirre
    2020-01-31T13:58:49+08:002020-01-31T13:58:49+08:00

    No nosso caso, o problema estava relacionado a certificados SSL assinados pelos próprios certificados CA Root & Intermediate. A solução foi - depois de descobrir a localização do arquivo cacert.pem do certifi (import certifi; certifi.where()) - foi anexar o próprio CA Root & Intermediates ao arquivo cacert.pem. Claro, esses próprios certificados estavam no formato PEM.

    • 1

relate perguntas

  • Conda quebra ao ativar o ambiente -- CommandNotFoundError: Nenhum comando 'conda conda'

  • Documentação do Notepad++ e Python

  • SCons construídos com desenvolvimento gcc8

  • Matplotlib - Erro de instalação do mapa base

  • pip não vai atualizar ou instalar módulos corretamente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve