2012-12-16 10 views
22

Recentemente, ho aggiornato il mio GAE SDK a ver. 1.7.4 e ha iniziato a lanciare "InvalidCertificateException" quando provo a eseguire il server di sviluppo. Ho cercato su questo errore e alcune persone hanno detto che va via con il tempo, ma il mio no. Cosa devo esaminare per risolvere questo problema? Sto usando Python framework Django per la mia app se questo dovesse importare in qualche modo.GAE SDK 1.7.4 e 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

Sembra che i certificati di root non siano aggiornati. I certificati GAE sono firmati dall'autorità di certificazione di Google, pertanto è necessario aggiornare il proprio archivio di certificati radice. Ti mancano aggiornamenti software per il tuo Mac? –

+0

@BurhanKhalid Grazie. Lo controllerò e tornerò da te. – taelimoh

+0

@BurhanKhalid No, tutto è aggiornato ma continua a generare un'eccezione. – taelimoh

risposta

39

soluzione rapida che ho trovato: eliminare il file google_appengine/lib/cacerts/cacerts.txt dal SDK installato.

Partendo dalla GoogleAppEngineLauncher:

GoogleAppEngineLauncher/Contents/Resources/GoogleAppEngineDefault.bundle/Content s/Resources/google_appengine/lib/cacerts/cacerts.txt

EDIT #

a partire da google app engine SDK 1.8.1 questo file è stato rinominato in urlfetch_cacerts.txt. Sempre nella stessa directory e rimuovendolo, risolve ancora il problema.

- @Harrison

+0

Mi sembra di doverlo fare ogni volta che aggiorno l'SDK. – Kevin

+0

Lo stesso qui. Devo cancellare questo file dopo ogni aggiornamento SDK. –

+1

Suppongo che per qualche motivo cacerts.txt non venga aggiornato durante l'aggiornamento dell'SDK. Non è difficile da risolvere, ma mi infastidisce ancora. – taelimoh

2

risposta compatta, corrente a partire dal gennaio 2014 (solo sopravvissuto un aggiornamento SDK):

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

o ...

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

e tutto corre di nuovo senza problemi.

E è meglio eliminare anche "cacerts.txt" (nella stessa directory). Altrimenti anche gli strumenti da riga di comando sdk genereranno eccezioni :(

1

FYI: se si utilizza un Mac con Mavericks, questo errore potrebbe essere dovuto all'uso di python 2.7.6 o inferiore, che ha un bug noto che causa questo . errore di

per esempio, si otterrebbe un errore simile, semplicemente cercando di ottenere qualsiasi pagina SSL:.

pip install requests 
python 

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

è possibile che questo sarebbe cedere gli stessi errori SSL CERT In questo caso, nessuno dei gcloud (Comandi di Google cloud SDK)

Aggiornamento a py thon 2.7.8 (o più recente 2.7.X) per risolvere il problema (ha funzionato per me).

0

L'aggiornamento di Python da 2.7.3 a 2.7.9 l'ha risolto per me. Sono su Mac OS X 10.6.8 (Snow Leopard).