Je travaille sur un script simple qui implique des CAS, la vérification de sécurité jspring, redirection, etc.. Je voudrais utiliser des requêtes de python de Kenneth Reitz parce que c’est un grand morceau de travail ! CAS exige toutefois obtenir validée via SSL, donc je dois franchir cette étape première. Je ne sais pas ce que les demandes de Python est désireux ? Où est-ce que ce certificat SSL suppose d’habiter ?
Réponses
Trop de publicités?Le problème que vous rencontrez soit causée par un non approuvés certificat SSL.
Comme @dirk mentionné dans un commentaire précédent, la plus rapide fix est un paramètre verify=False
.
Veuillez noter que ce sera la cause de l'attestation qui n'a pas à être vérifiée. Comme mentionné dans les commentaires, cela peut être acceptable pour rapide/jetable/d'applications de scripts. Si ce n'est pas acceptable dans votre contexte particulier, envisager les options suivantes:
- Réglage de l'
verify
paramètre une chaîne de caractères qui est le chemin de la .pem fichier du certificat. - Paramètre
verify=True
et configurer votre système afin qu'il vérifie le certificat. Il faudrait ajouter le certificat en tant que sait de l'une ou de modifier le système de Certificats de l'Autorité de celui qui reconnaît le certificat que vous souhaitez. Parler du Système/administrateur Réseau si vous en avez un dans ce contexte.
De demandes de documentation sur la vérification SSL:
Requêtes peuvent vérifier les certificats SSL pour les requêtes HTTPS, tout comme un navigateur web. Pour vérifier le certificat SSL de l’hôte, vous pouvez utiliser l’argument de vérifier :
J'ai trouvé une approche spécifique pour la résolution d'un problème similaire. L'idée est de pointer l'cacert fichier stocké dans le système[1] et utilisé par un autre ssl fonction des applications.
Dans Debian (je ne suis pas sûr si même dans les autres distributions) les fichiers de certificat (.pem) sont stockés à l' /etc/ssl/certs/
de la Sorte, c'est le code qui fonctionne pour moi:
import requests
verify='/etc/ssl/certs/cacert.org.pem'
response = requests.get('https://lists.cacert.org', verify=verify)
Pour deviner ce qu' pem
le fichier de choisir, j'ai accédez à l'url, et vérifiez le Certificat d'Autorité de certification (CA) a généré le certificat.
EDIT: si vous ne pouvez pas modifier le code (parce que vous utilisez une troisième application), vous pouvez essayer d'ajouter l' pem
certificat directement dans /usr/local/lib/python2.7/dist-packages/requests/cacert.pem
(par exemple, la copie à la fin du fichier).
[1] http://hearsum.ca/blog/python-and-ssl-certificate-verification/#comment-443
J'ai rencontré le même problème. S'avère que je n'avais pas installé le certificat intermédiaire sur mon serveur (juste l'ajouter à la partie inférieure de votre certificat comme on le voit ci-dessous).
https://www.digicert.com/ssl-support/pem-ssl-creation.htm
Assurez-vous d'avoir le paquet ca-certificates installé:
sudo apt-get install ca-certificates
La mise à jour de l'heure peut également résoudre ce problème:
sudo apt-get install ntpdate
sudo ntpdate -u ntp.ubuntu.com
Si vous utilisez un certificat auto-signé, vous devrez probablement ajouter à votre système manuellement.