web-dev-qa-db-fra.com

Impossible d'obtenir le certificat d'émetteur local lors de l'utilisation des demandes dans python

voici mon code

import requests;
url='that website';
headers={
  'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
};
r = requests.get(url,headers=headers);
print(r);
print(r.status_code);

puis il est tombé sur ceci:

requests.exceptions.SSLError: HTTPSConnectionPool (Host = 'www.xxxxxx.com', port = 44 3): Le nombre maximal de tentatives a été dépassé avec l'URL: xxxxxxxx (Causé par SSLEr ror (SSLCertVerificationError (1, ', vérification de certificat [SSL: CERTIFICATE_VERIFY_FAILED] a échoué) : impossible d'obtenir le certificat d'émetteur local (_ssl.c: 1045) ')))

que devrais-je faire?

9
innocentDrifter

Ce n'est pas recommandé pour utiliser verify = False dans les environnements de votre organisation. Cela désactive essentiellement la vérification SSL.

Parfois, lorsque vous êtes derrière un proxy d'entreprise, il remplace la chaîne de certificats par celles du proxy. L'ajout des certificats dans cacert.pem utilisés par certifi devrait résoudre le problème. J'ai eu un problème similaire. Voici ce que j'ai fait pour résoudre le problème -

  1. Trouvez le chemin où se trouve cacert.pem -

Installez certifi, si vous n'en avez pas. Commande: pip install certifi

import certifi
certifi.where()
C:\\Users\\[UserID]\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\certifi\\cacert.pem
  1. Ouvrez l'URL sur un navigateur. Téléchargez la chaîne de certificats à partir de l'URL et enregistrez-la sous forme de fichiers .cer encodés en Base64.

  2. Ouvrez maintenant le cacert.pem dans un bloc-notes et ajoutez simplement tous les contenus de certificats téléchargés (---Begin Certificate--- *** ---End Certificate---) à la fin.

10
Indranil

Dans mon cas, c'était un violoniste en cours d'exécution ...

0