GAE SDK 1.7.4和InvalidCertificateException

tae*_*moh 22 python django google-app-engine

最近,我将GAE SDK升级到了ver.1.7.4当我尝试运行开发服务器时,它开始抛出'InvalidCertificateException'.我搜索了这个错误,有些人说它随着时间的推移而消失,但我没有.我应该考虑什么来解决这个问题?我正在使用python框架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
Run Code Online (Sandbox Code Playgroud)

tae*_*moh 39

我找到的快速解决方法:google_appengine/lib/cacerts/cacerts.txt从已安装的SDK中删除该文件.

从GoogleAppEngineLauncher开始:

GoogleAppEngineLauncher /内容/资源/ GoogleAppEngineDefault.bundle /内容S /资源/ google_appengine/lib中/ cacerts中/ cacerts.txt

编辑#

截至谷歌应用引擎SDK 1.8.1此文件已重命名为urlfetch_cacerts.txt.仍然在同一目录中删除它仍然可以解决问题.

- @Harrison

  • **注意:**自谷歌应用引擎SDK 1.8.1起,此文件已重命名为`urlfetch_cacerts.txt`.仍然在同一目录中删除它仍然可以解决问题. (5认同)
  • @asitaru Yup我将其与其他证书文件一起删除,问题仍然存在.我的一个同事实际上昨晚发现了这个特定问题的解决方案(他也使用了arch) - 我们不得不在ssl.py(在核心python文件中)硬编码以使用TLSv1作为ssl协议.这是一个巨大的黑客 - 为皮特的缘故,我们正在搞乱核心的python文件! - 但它确实有效.如果有人需要更多细节,那么添加评论,我可以更详细地解释我们的修复. (2认同)