web-dev-qa-db-ja.com

Google AppEngineの使用時にSSL証明書が無効または欠落している

[〜#〜] update [〜#〜]:誰か助けてくれたらお願いします:Googleはバグに関するこの問題の入力と例を待っています追跡ツール。この問題の再現可能な手順がある場合は、次の場所で共有してください: https://code.google.com/p/googleappengine/issues/detail?id=10937

Google AppEngineバックエンドを使用してStackExchangeAPIからデータをフェッチしようとしています。ご存知かもしれませんが、StackExchangeのAPIの一部はサイト固有であり、開発者はユーザーが登録されているすべてのサイトに対してクエリを実行する必要があります。

したがって、これらのサイトからタイムラインデータをフェッチするためのバックエンドコードは次のとおりです。 feed_info_site変数は、StackExchangeサイト名('security''serverfault'など)を保持します。

    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

Stack Overflowを除くすべてのサイトでこのクエリを実行すると、すべて正常に機能します。奇妙なことに、feed_info_site変数が'stackoverflow'に設定されていると、Google AppEngineから次のエラーが発生します。

    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

もちろん、Safariで同じクエリを実行すると、APIから期待するJSONの結果が得られます。したがって、問題は本当にGoogleのURLfetchサービスにあります。同様のHTTPS/SSL例外に関連するStackOverflowに関するいくつかのトピックをここで見つけましたが、受け入れられた回答が私の問題を解決しませんでした。 cacerts.txtファイルを削除してみました。また、validate_certificate=Falseで電話をかけようとしましたが、成功しませんでした。

この問題はHTTPS/SSLに厳密に関連しているわけではないと思います。もしそうなら、単一のAPIパラメータを変更するとリクエストが失敗することをどのように説明しますか?

64
Romain
  1. App Engineの次のアップデート(まもなく予定されています)を待ってから、アップデートしてください。
  2. Browserid.org/verifyを別のサービスに置き換えます(verifier.loogin.persona.org/verifyは、Mozillaがホストする優れたサービスであり、使用できます)
  3. Cacerts.txtが存在しないことを確認してください(並べ替えたように見えますが、念のため:-))
  4. もう一度やり直してください頑張ってください! -ブレンダン
1

私は同じエラーに直面していました、グーグルは今アプリエンジンを更新しました、エラーは解決しました、更新されたドキュメントをチェックしてください。

0
Rambo