Подтвердить что ты не робот

GAE SDK 1.7.4 и InvalidCertificateException

Недавно я обновил SDK GAE до версии. 1.7.4, и он начал бросать "InvalidCertificateException" при попытке запустить сервер разработки. Я искал эту ошибку, и некоторые люди говорили, что она уходит со временем, но мой не сделал. Что я должен изучить, чтобы исправить эту проблему? Я использую python framework Django для своего приложения, если это имеет какое-то значение.

$ dev_appserver.py ./
INFO     2012-12-16 07:44:31,412 appcfg.py:586] Checking for updates to the SDK.
Traceback (most recent call last):
  File "/usr/local/bin/dev_appserver.py", line 171, in <module>
    run_file(__file__, globals())
  File "/usr/local/bin/dev_appserver.py", line 167, in run_file
    execfile(script_path, globals_)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_main.py", line 747, in <module>
    sys.exit(main(sys.argv))
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_main.py", line 680, in main
    update_check.CheckForUpdates()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appcfg.py", line 597, in CheckForUpdates
    runtime=self.config.runtime)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 391, in Send
    f = self.opener.open(req)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 394, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 412, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1207, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/fancy_urllib/fancy_urllib/__init__.py", line 379, in do_open
    url_error.reason.args[1])
fancy_urllib.InvalidCertificateException: Host appengine.google.com returned an invalid certificate (_ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed): 
To learn more, see http://code.google.com/appengine/kb/general.html#rpcssl
4b9b3361

Ответ 1

Быстрое обходное решение, которое я нашел: удалите файл google_appengine/lib/cacerts/cacerts.txt из установленного SDK.

Начиная с GoogleAppEngineLauncher:

GoogleAppEngineLauncher/Содержание/Ресурсы/GoogleAppEngineDefault.bundle/Content s/Ресурсы/google_appengine/Library/cacerts/cacerts.txt

ИЗМЕНИТЬ #

как в google app engine SDK 1.8.1, этот файл был переименован в urlfetch_cacerts.txt. Все еще в том же каталоге и удалении его все еще исправляет проблему.

- @Harrison

Ответ 2

Компактный ответ, текущий с января 2014 года (только что пережил обновление SDK):

rm file /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/cacerts/urlfetch_cacerts.txt

или...

cd /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/cacerts/
rm urlfetch_cacerts.txt

и все снова работает плавно.

И вам лучше удалить "cacerts.txt" (в том же каталоге). В противном случае инструменты командной строки sdk также будут генерировать исключения: (

Ответ 3

FYI: если вы работаете на Mac, работающем с Mavericks, эта ошибка может быть связана с использованием python 2.7.6 или ниже, который имеет известную ошибку, которая вызывает эту ошибку.

Например, вы получите аналогичную ошибку, просто попытавшись получить любую страницу SSL:

pip install requests
python

>>> import requests
>>> requests.get("https://github.com")

Вышеприведенные действия приведут к тем же ошибкам SSL-сертификата. В этом случае ни одна из команд gcloud (Google cloud SDK) не работает.

Перейдите на python 2.7.8 (или более поздний 2.7.X), чтобы решить проблему (работал у меня).

Ответ 4

Обновление Python с 2.7.3 до 2.7.9 исправило это для меня. Я нахожусь в Mac OS X 10.6.8 (Snow Leopard).