2012-12-16 13 views
22

Niedawno uaktualniłem swoje SDE SDK do wersji ver. 1.7.4 i zaczął rzucać "InvalidCertificateException" podczas próby uruchomienia serwera programistycznego. Szukałem tego błędu i niektórzy ludzie mówili, że z czasem znika, ale moje nie. Na co powinienem zwrócić uwagę, aby rozwiązać ten problem? Używam Python framework Django dla mojej aplikacji, jeśli ma to jakieś znaczenie.GAE SDK 1.7.4 i 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

Wygląda na to, że Twoje certyfikaty główne nie są aktualne. Certyfikaty GAE są podpisywane przez Urząd certyfikacji Google - dlatego musisz zaktualizować sklep certyfikatu głównego. Czy brakuje aktualizacji oprogramowania dla twojego komputera Mac? –

+0

@BurhanKhalid Dzięki. Sprawdzę to i wrócę do ciebie. – taelimoh

+0

@BurhanKhalid Nie, wszystko jest aktualizowane, ale wciąż rzuca wyjątek. – taelimoh

Odpowiedz

39

Szybkie obejście, które znalazłem: usunąć plik google_appengine/lib/cacerts/cacerts.txt z zainstalowanym SDK.

Począwszy od GoogleAppEngineLauncher:

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

EDIT #

co do pakietu SDK aplikacji Google Engine 1.8.1 ten plik został zmieniony na plik urlfetch_cacerts.txt. Nadal w tym samym katalogu i usuwając go, ciągle naprawia problem.

- @Harrison

+0

Wydaje mi się, że muszę to robić za każdym razem, gdy aktualizuję SDK. – Kevin

+0

To samo tutaj. Muszę usunąć ten plik po każdej aktualizacji SDK. –

+1

Przypuszczam, że z jakiegoś powodu plik cacerts.txt nie jest aktualizowany podczas uaktualniania zestawu SDK. Nie jest to trudne do naprawienia, ale nadal mnie budzi. – taelimoh

2

Compact odpowiedź, aktualny od stycznia 2014 roku (właśnie przeżył aktualizacji SDK):

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

lub ...

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

i wszystko działa znów gładko.

A ty lepiej usuń również "cacerts.txt" (w tym samym katalogu). W przeciwnym razie narzędzia wiersza poleceń sdk będą również zgłaszać wyjątki: (

1

FYI: jeśli używasz Macintosha z Mavericks, ten błąd może wynikać z użycia Pythona 2.7.6 lub niższego, który ma znany błąd, który powoduje to . błąd

na przykład, co można uzyskać podobny błąd, po prostu stara się dowolną stronę SSL.

pip install requests 
python 

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

powyższy dawałoby same błędy cert SSL W tym przypadku żaden z gcloud (Komenda Google Cloud SDK).

Uaktualnij do py thon 2.7.8 (lub nowszy 2.7.X), aby rozwiązać problem (pracował dla mnie).

0

Ulepszono Python z wersji 2.7.3 na 2.7.9. Pracuję w systemie Mac OS X 10.6.8 (Snow Leopard).