2017-10-09 2 views
1

Je suis en train de résoudre le problèmePython - Problème SSL: CERTIFICATE_VERIFY_FAILED

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579) 

lorsque je me connecte à un serveur de poignée.

J'ai aussi utilisé

ssl._create_default_https_context = ssl._create_unverified_context 

avec un utilisateur suggéré, mais je ne suis pas en mesure de résoudre le problème.

Une autre solution?

Merci

+0

Veuillez fournir la version python et votre OS – Antwane

+0

@Antwane Centos 7 et Python 2.7.5 – Fab

+0

Avez-vous pu résoudre ce problème? –

Répondre

0

Si vous voulez juste ignorer la validation du certificat, requests accepte VÉRIFIER argument de mot-clé à cette fin:

requests.get('https://www.google.com', verify=False) 

Cela déclenchera probablement une InsecureRequestWarning, mais la demande devrait revenir OK peu importe .

+0

Je viens d'essayer cette solution: 'r = requests.get (url, auth = HTTPBasicAuth (utilisateur, pwd), verify = False)'. httpS renvoie une réponse vide, alors que http fonctionne bien. – Fab

0

Votre serveur dispose-t-il d'un certificat valide, signé par une autorité de certification? Si elle utilise un certificat auto-signé, je vous suggère de sauvegarder une copie du certificat public dans votre projet Python et de transmettre le nom du certificat dans le paramètre verify des requêtes.

Vous pouvez enregistrer le certificat en accédant au serveur sur Firefox, en cliquant sur l'icône Verrouiller près de la barre d'adresse, en sélectionnant le certificat, puis Plus de détails, puis Afficher le certificat, puis exporter.

Vous obtiendrez un fichier .pem, disons: "my_server_certificate.pem".

Ensuite, lorsque vous créez votre objet Session sur demande vous pouvez passer le paramètre:

session = requests.Session() 
session.verify = "my_server_certificate.pem" 

J'ai eu des problèmes similaires lors de l'utilisation de proxy charles avec mes scripts Python. J'espère que cela vous aidera à résoudre votre problème.

+0

Je reçois '__init __() a un argument de mot clé inattendu 'verify''. J'ai lu que Session ne prend plus d'arguments dans son constructeur. Actuellement, la documentation est périmée à ce sujet. J'ai essayé 'session = requests.Session()' et 'session.verify = False' mais le problème persiste. – Fab

+0

Mon mauvais. Oui, vous devez créer la session puis définir session.verify = "my_server_certificate.pem" –

+0

Modifié la réponse pour refléter cela. –