web-dev-qa-db-fra.com

Certificat SSL invalide et/ou manquant lors de l'utilisation de Google App Engine

UPDATE: Si quelqu'un peut vous aider, Google attend des informations et des exemples de ce problème sur son outil de suivi des bogues. Si vous disposez d'étapes reproductibles pour ce problème, partagez-les sur: https://code.google.com/p/googleappengine/issues/detail?id=10937

J'essaie d'extraire des données de l'API StackExchange en utilisant un moteur Google App Engine. Comme vous le savez peut-être, certaines API de StackExchange sont spécifiques à un site, obligeant les développeurs à exécuter des requêtes sur chaque site dans lequel l'utilisateur est enregistré.

Alors, voici mon code de base pour récupérer les données de chronologie de ces sites. La variable feed_info_site contient le nom du site StackExchange (tel que 'security', 'serverfault', etc.).

    data = json.loads(urllib.urlopen("%sme/timeline?%s" % 
        (self.API_BASE_URL, urllib.urlencode({"pagesize": 100, 
        "fromdate": se_since_timestamp, "filter": "!9WWBR
        (nmw", "site": feed_info_site, "access_token": 
    decrypt(self.API_ACCESS_TOKEN_SECRET, self.access_token), "key": 
self.API_APP_KEY}))).read())
for item in data['items']:
    ... # code for parsing timeline items

Lors de l'exécution de cette requête sur tous les sites sauf Stack Overflow, tout fonctionne correctement. Ce qui est bizarre, c’est que, lorsque la variable feed_info_site est définie sur 'stackoverflow', l’erreur suivante apparaît dans Google App Engine:

    HTTPException: Invalid and/or missing SSL certificate for URL: 
https://api.stackexchange.com/2.2/me/timeline?
filter=%219WWBR%28nmw&access_token=
    <ACCESS_TOKEN_REMOVED>&fromdate=1&pagesize=100&key=
<API_KEY_REMOVED>&site=stackoverflow

Bien sûr, si j'exécute la même requête dans Safari, j'obtiens les résultats JSON que j'attends de l'API. Le problème réside donc vraiment dans le service URLfetch de Google. J'ai trouvé plusieurs sujets ici sur le dépassement de pile liés à des exceptions HTTPS/SSL similaires, mais aucune réponse acceptée n'a résolu mes problèmes. J'ai essayé de supprimer les fichiers cacerts.txt. J'ai aussi essayé de passer l'appel avec validate_certificate=False, sans succès.

Je pense que le problème n'est pas strictement lié à HTTPS/SSL. Si tel est le cas, comment expliqueriez-vous que la modification d'un seul paramètre d'API entraînerait l'échec de la demande?

64
Romain
  1. Attendez la prochaine mise à jour du moteur de l'application (bientôt programmée), puis mettez-la à jour.
  2. Remplacer browserid.org/verify par un autre service (verifier.loogin.persona.org/verify est un bon service hébergé par Mozilla, ce qui pourrait être utilisé)
  3. Assurez-vous que cacerts.txt n’existe pas (on dirait que vous avez trié mais juste au cas où :-))
  4. Nouvelle tentative Bonne chance! - Brendan
1
Brendan Jennings

Je faisais face à la même erreur, Google a mis à jour le moteur de l'application maintenant, erreur résolue, veuillez vérifier la documentation mise à jour.

0
Rambo