J'essaie d'envoyer une requête HTTP GET à l'aide de requêtes Python à une API qui nécessite un certificat client. Je passe dans un PEM et le fichier clé dans la requête GET en utilisantDemande GET Python avec certificat client échoue
session = requests.Session()
session.get('https://localhost/rest/containers/7uyeogzKQayw4mmQmcJb2Q/listeners', cert=('development.pem', 'development.key'))
Lors de cet appel, j'utilise Nginx comme critère d'évaluation, je reçois:
2017-10-07 21:18:16,874 - containerLogger - DEBUG - code:400 text:
<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx/1.12.1</center>
</body>
</html>
Je J'ai testé la même API en utilisant une requête POST sur le même point de terminaison en utilisant les mêmes certificats et cela a réussi. J'ai validé le même GET en utilisant un navigateur (Firefox) avec succès.
J'essaye actuellement de comprendre pourquoi le POST est réussi, mais le GET échoue. Je n'ai pas de chance à chercher une réponse.
Vous ne savez pas si cela est dû à des requêtes ou urllib3.
Versions:
- Java 1.8
- Jython 2.7.1
- Python 2.7.10
- Demandes 2.18.1
- urllib3
- certifi 2017.04.17
Toute aide est grandement apprécié.
Cheers - Erik
Je ne suis pas sûr de ce que vous essayez de dire. J'ajoute déjà le cert comme un tuple sur l'appel à l'obtenir. J'ai essayé même de changer à l'aide d'une demande sur la session et il échoue toujours. L'utilisation de session.cert n'est qu'une manière persistante de définir le certificat, en fonction de la documentation. – Erik