2012-12-16 11 views
22

最近、GAE SDKをverにアップグレードしました。 1.7.4と私は開発サーバーを実行しようとすると 'InvalidCertificateException'をスローするようになった。私はこのエラーについて調査し、時間がたつにつれて消えていくと言った人もいましたが、私はそうしませんでした。この問題を解決するにはどうすればよいですか?私はPythonフレームワークDjangoを私のアプリに使用しています。GAE SDK 1.7.4およびInvalidCertificateException

$ 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 
+0

あなたのルート証明書が最新ではないようです。 GAE証明書はGoogle認証局によって署名されているため、ルート証明書ストアを更新する必要があります。お使いのMacのソフトウェアアップデートがありませんか? –

+0

@BurhanKhalidありがとうございました。私はそれを確認し、あなたに戻ってきます。 – taelimoh

+0

@BurhanKhalidいいえ、すべてが更新されますが、まだ例外がスローされます。 – taelimoh

答えて

39

私が見つけたクイック回避策:インストールされたSDKからファイルgoogle_appengine/lib/cacerts/cacerts.txtを削除してください。

GoogleAppEngineLauncher最低料金:

GoogleAppEngineLauncher /目次/リソース/ GoogleAppEngineDefault.bundle /コンテンツS /リソース/ google_appengine/libに/ cacertsに/ cacerts.txt

EDITの#

Google Apps Engine SDK 1.8.1以降このファイルは urlfetch_cacerts.txtに名前が変更されました。まだ同じディレクトリにあり、それを削除すると、 は問題を解決します。 -

@Harrison

+0

私はSDKを更新するたびにこれを行う必要があるようです。 – Kevin

+0

同じです。私はSDKのアップデートが終わるたびにこのファイルを削除しなければなりません。 –

+1

SDKをアップグレードしている途中で何らかの理由でcacerts.txtが更新されないと思います。修正するのは難しいことではありませんが、それでも私はバグです。 – taelimoh

2

コンパクト答えは、2014年1月現在のもの(単に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コマンドラインツールも例外をスローします:(

1

FYI:Mavericksを実行しているMacでは、このエラーはpython 2.7.6以下を使用している可能性があります。エラーたとえば

、あなたは、単に任意のSSLページを取得しようとすることで、同様のエラーを得るでしょう:。

pip install requests 
python 

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

上記同じSSL証明書エラーを生じるのgcloudのこの場合は、なし(。 GoogleクラウドSDK)コマンドが機能する。

pyにアップグレードする2.7.8(またはそれより新しい2.7.X)の問題を解決するために(私のために働いた)。

0

Pythonを2.7.3から2.7.9にアップグレードすると、私のために修正されました。私はMac OS X 10.6.8(Snow Leopard)です。

関連する問題