1

Ubuntu 12.04 には、openssl に関する未解決のバグがあります。TLS 1.2 をサポートしていないホスト (Evernote など) に接続しようとすると、「プロトコル違反で EOF が発生しました」というメッセージが表示されます。https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371を参照してください

そのバグへのコメントには、TLS 1.1 が強制されている httplib.py の回避策があります。残念ながら、これは urlfetch に基づく独自のカスタム httplib を使用するため、GAE SDK では機能しません。

urlfetch に TLS 1.1 を強制的に使用させるにはどうすればよいですか? または、このバグを回避するにはどうすればよいですか? アプリを GAE にアップロードすると正常に動作するため、SDK のローカル修正のみが必要です。カスタム httplib.py を Python 2.7 のパッチを適用したスト​​ック httplib.py に置き換えようとしましたが、そのモジュールには ssl とソケットが必要であり、別の OS などが必要になるため、これはさらなる問題につながります。

編集: トレースバックの最後の部分:

  File "evernote-sdk/lib/thrift/transport/THttpClient.py", line 122, in flush
    self.code, self.message, self.headers = self.__http.getreply()
  File "google_appengine/google/appengine/dist27/httplib.py", line 592, in getreply
    response = self._conn.getresponse()
  File "google_appengine/google/appengine/dist27/httplib.py", line 502, in getresponse
    raise HTTPException(str(e))
HTTPException: ApplicationError: 6 [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

問題なのは、Ubuntu 12.04、Evernote のサーバー/SDK、および Google App Engine SDK の組み合わせです。

4

1 に答える 1

2

トレースバックは、エラーがここで発生したことを示しています: http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/dist27/httplib.py#490 このコード ブロックは、同じファイルの 363 行目で urlfetch.fetch に割り当てられます。

urlfetch を使用するようになりました。問題は dev_appserver だけにあるため、urlfetch_stub.py を見てみましょう。スタブ モジュールは、fancy_urllib ライブラリを使用してリクエストを行います。また、ubuntu ランチパッドのバグで、

< self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
---
> self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1)

これは、パッチを適用したい呼び出しを示唆しています。fancy_urllib で「ssl.wrap_socket」を探すと、1 つのヒットが得られます: init.py#159">http://code.google.com/p/googleappengine/source/browse/trunk/python/lib/fancy_urllib/fancy_urllib/ init .py#159

この方法にパッチを当てることはできますか? 問題の再現方法がわからないため、確認できません。

FWIW、すべての SDK コードで「ssl.wrap_socket」を検索すると、httplib2 サードパーティ ライブラリの数行もポイントされますが、現時点では、これにパッチを適用する必要はないと思います。

于 2012-06-15T16:19:19.603 に答える