web-dev-qa-db-fra.com

SSL.SSLCERTERIFICATIONError: [SSL: Certificat_Verify_FAILED] Certificat Vérifier a échoué: impossible d'obtenir un certificat d'émetteur local (_SSL.c: 1056)

J'utilise Python 3.7.3 pour exécuter une demande d'obtention d'un fichier PHP hébergé sur mon site Web. Toutefois, quand je l'exécute, je reçois l'erreur ci-dessous . J'ai installé requests via pip3 sur homebrew. J'utilise Macos Mojave.

Traceback (appel le plus récent):
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", ligne 600, en Urlopen chunked = punked)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", ligne 343, in _make_request self._validate_conn (conn)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", ligne 839, in _validate_conn conn.Connect ()
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/connection.py", ligne 344, dans connect SSL_Context = Contexte)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/util/ssl_.py", ligne 344, dans ssl_wrap_socket
retour context.wrap_socket (sock, server_hostname = server_hostname)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/ssl.py", ligne 412, dans WraP_socket Session = Session
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/ssl.py", ligne 853, in _create Self.do_handshake ()
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/ssl.py", ligne 1117, dans do_handshake self._sslobj.do_handshake ()
[.____] SSL.SSLCERTVITINATIONError: [SSL: Certificat_Verify_Failed] Certificat Vérifier a échoué: impossible d'obtenir un certificat d'émetteur local (_ssl.c: 1056)

Lors de la manipulation de l'exception ci-dessus, une autre exception s'est produite:

Traceback (appel le plus récent):
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/adapters.py", ligne 449, dans Envoyer timeout = Timeout
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", ligne 638, in Urlopen _stacktrace = sys.exc_info () [) [ 2])
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/urllib3/util/retry.py", ligne 398, en incrément élever MaxRetryError (_pool, URL , erreur ou réponseError (cause)) urllib3.exceptions.maxretryError: httpsconnectionpool (hôte = 'iJetlab.com', port = 443): MAX de tentatives dépassées avec URL: /api/api.php?one=1&two=2 (causée par SSLERROR (SSLCERTERIFICIANTINATINGEError (1, '[SSL: Certificat_Verify_Failed] Vérification de la vérification: impossible d'obtenir un certificat d'émetteur local (_SSL.c: 1056)')))))))))

Lors de la manipulation de l'exception ci-dessus, une autre exception s'est produite:

Traceback (appel le plus récent):
Fichier "/USERSERS/MAXWELLNEWBERRY/DOCUMITS/TEST.PY", ligne 12, dans r = demande.get (URL = URL, paramiques = params)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/api.py", ligne 75, dans la demande de retour ('get', URL , paramiques = paramètres, ** kwargs)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/api.py", ligne 60, dans la demande de retour de demande.Request (méthode = méthode , URL = URL, ** kwargs)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/sesstions.py", ligne 533, sur demande resp =. Self.Send (Prep, ** SEND_KWARGS)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/sessions.py", ligne 646, in send R = Adapter.send (demande, ** kwargs)
Fichier "/library/frameworks/python.framework/versions/3.7/lib/python3.7/site-packages/requests/adapters.py", ligne 514, in Send levée SSLERROR (E, Demande = Demande ) demande.ExceptionS.SSCECEDS.SSLERROR: httpsconnectionpool (hôte = 'iJetLab.com', port = 443): MAX de tentatives dépassées avec URL: /api/api.php?one=1&two=2 (causée par SSLERROR (SSLCERTVITIATIBIATINGERROR (1, ' [SSL: certificat_verify_failed] Certificat Vérifier l'échec: Impossible d'obtenir un certificat d'émetteur local (_SSL.c: 1056) '))))))))))))

Voici le code:

# 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'])

Toutes les recherches m'ont dit d'exécuter 'installer des certificats.cand', et j'ai - environ 100 fois. J'ai également fait installer les certificats d'installation du client.

14
mac

Dans notre cas, la question était liée aux certificats SSL signés par ses propres certificats de racine et intermédiaire. La solution était - après avoir découvert l'emplacement du fichier CACERT.PEM de certificat.PEM (import certifié; certifié.Owhere (Owner ()) - était d'ajouter la propre racine et intermédiaires CA CaCert.pem. Bien sûr, ces propres certificats étaient au format PEM.

1

Je ne pense pas que le serveur soit nécessairement le problème. Je fais quelque chose de similaire, mais mes deux premières lignes sont les suivantes.

importer pandas comme pd

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

Je le fais simultanément sur MacBook Pro avec Mojave 10.14.6 et une surface Microsoft avec Windows 10 Enterprise, 10.0.17134, à la fois avec Jupyter. Mon Python Installation est de 3,7.3 sur les deux.

Les deux accèdent à Internet via le même Wi-Fi de la maison.

La surface l'a attrapé au premier essai. Le MacBook me donne la même erreur que l'OP.

Donc, il n'est vraiment pas probable que le serveur de la base de données UCI soit le problème.

0
Sakyataksis