Les requêtes SSL de Python et chiffrons les certs

j'ai du mal en ce moment à obtenir le demande bibliothèque pour effectuer un simple GET demande à un site de mine avec un Let's Encrypt certificat. Tout est bien avec le site et je peux y accéder à partir de Chrome très bien. (Je dirige OSX El Capitan en ce moment).

d'Abord j'ai essayé de faire un GET demande au site:

>>> import requests
>>> requests.get('https://example.com')

Cela me donne:

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

j'ai alors essayé diverses choses, y compris obtenir détenir de l' chiffrons le certificat d'autorité et openssl commande vérifie mon certificat du site:

> openssl s_client -CAfile ./letsencryptauthorityx1.pem -connect example.com:443

dont la sortie comprenait ce qui suit vers le bas:

...
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: ...
    Session-ID-ctx: 
    Master-Key: ...
    Key-Arg   : None
    Start Time: 1452865123
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

peut-être que je manque quelque chose ici, mais il me semble que mon site a été vérifié selon le certificat D'autorité de chiffrement que j'ai fourni. Alors, j'ai heureusement changé mon code Python en:

>>> requests.get('https://example.com', verify='./letsencryptauthorityx1.pem')

Mais I encore l' requests.exceptions.SSLError erreur. J'ai aussi essayé d'utiliser le DER format du certificat de l'autorité, mais ensuite, j'obtiens l'erreur suivante requests:

requests.exceptions.SSLError: unknown error (_ssl.c:2825)

quelqu'un Peut peut-être m'éduquer à la façon d'aller sur la fixation de ce?

8
demandé sur Thane Thomson 2016-01-15 17:03:45

3 réponses

on dirait que vos certificats sur la machine ne sont pas à jour ou que le serveur web n'est pas configuré pour servir toute la chaîne de certificats.

2
répondu Patrice Laramée 2016-03-28 15:31:47

sur OSX vous pouvez exporter tous les certs de votre porte-clés d'accès à A.fichier pem et ensuite pointer les requêtes vers ce fichier: http://movingpackets.net/2015/03/18/telling-openssl-about-your-root-certificates/

CA_BUNDLE = path_to_your_exported_file.pem
response = requests.get(user_account_url, verify=CA_BUNDLE)
0
répondu Paul McDonald 2016-07-20 02:54:00

Pour une perte de l'âme que suis tombé sur ce post en cherchant un Windows Correctif pour ce problème.

Utilisation De Chrome:

  1. ouvrir L'URL en utilisant HTTPS.
  2. sur la barre d'adresse, Cliquez où il est écrit "Sécurisé".
  3. Cliquez sur le certificat.
  4. allez à l'onglet" Chemin de Certification".
  5. sélectionnez " chiffrons L'Autorité X3 "(passez à un niveau supérieur), puis cliquez sur"Voir le certificat".
  6. aller à La " détails" onglet et cliquez sur "Exporter vers un Fichier".
  7. dans L'Assistant, cliquez sur Suivant et sélectionnez "Base-64 encoded X. 509 (.CER)", cliquez à nouveau sur Suivant.
  8. sélectionnez un dossier et le nom du fichier (souvenez-vous de ce répertoire).
  9. Aller au dossier et cliquez-droit sur le certificat et cliquez sur "Installer le Certificat".
  10. Sélectionner la Machine Locale (Nécessite des Droits d'Administrateur), cliquez sur suivant.
  11. Sélectionner "Sélectionner automatiquement la boutique de certificats..."(Par défaut), cliquez sur prochain.
  12. Cliquez Sur Terminer.
  13. Lancez à nouveau votre Script Python.

avertissement: utiliser Chrome 67.0.3396.99 avec Windows 10 64-Bit.

0
répondu Xedret 2018-07-13 20:06:00