2017-10-09 5 views
0

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

Répondre

0

Lorsque vous créez un session = requests.Session() les demandes de documentation que vous avez session.cert = '/path/to/client-cert.crt'

Un moyen plus facile est de passer comme un tuple.

requests.get('https://localhost/rest/containers/7uyeogzKQayw4mmQmcJb2Q/listeners', cert=('/path/client.cert', '/path/client.key')) 

Documentation Lien

+0

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