Когда я вызываю API-интерфейс Python Google Earth Engine (GEE) через Google AppEngine, он выдает исключение HTTPException, в котором говорится: "HTTPException: недействительный и/или отсутствующий сертификат SSL для URL: https://accounts.google.com/o/oauth2/token". Проект проходит задолго до Нового года, но он внезапно вспыхнул без каких-либо изменений в моих собственных кодах, когда я вчера тестировал его.
HTTPException: недопустимый и/или отсутствующий сертификат SSL для URL-адреса: https://accounts.google.com/o/oauth2/token
Ответ 1
Я также испытываю ту же проблему в моем python script с App Engine. Он работал нормально несколько дней назад, а сертификат для accounts.google.com действителен до 9 марта 2017 года.
File "/Users/QQQ/Documents/Developpements/ae-python-project/app/user_spreadsheet_auth.py", line 55, in _get_service
service = build('sheets', 'v4', http=http_auth)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/googleapiclient/discovery.py", line 222, in build
cache)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/googleapiclient/discovery.py", line 269, in _retrieve_discovery_doc
resp, content = http.request(actual_url)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/oauth2client/transport.py", line 159, in new_request
credentials._refresh(orig_request_method)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/oauth2client/client.py", line 744, in _refresh
self._do_refresh_request(http)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/oauth2client/client.py", line 775, in _do_refresh_request
body=body, headers=headers)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/oauth2client/transport.py", line 282, in request
connection_type=connection_type)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/httplib2/__init__.py", line 1609, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/httplib2/__init__.py", line 1351, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/Users/QQQ/Documents/Developpements/ae-python-project/libs/httplib2/__init__.py", line 1307, in _conn_request
response = conn.getresponse()
File "/Users/QQQ/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/gae_override/httplib.py", line 532, in getresponse
raise HTTPException(str(e))
HTTPException: Invalid and/or missing SSL certificate for URL: https://accounts.google.com/o/oauth2/token
Изменить: похоже, что проблема была сообщена здесь несколько часов назад: https://code.google.com/p/googleappengine/issues/detail?id=13477
Ответ 2
В трекер для этой проблемы с GAE, сопровождающие предоставляют обходное решение:
В качестве временного обходного пути вы можете заменить устаревший urlfetch_cacerts.txt с https://curl.haxx.se/ca/cacert.pem
В linux вы можете использовать следующую команду: wget https://curl.haxx.se/ca/cacert.pem -O {Root of Python SDK}/lib/cacerts/urlfetch_cacerts.txt
Ответ 3
В Windows, поскольку SDK хранится в области только для чтения Admin, я использовал Windows File Explorer в два этапа вместо script.
Сначала загрузите https://curl.haxx.se/ca/cacert.pem в папку, например. Загрузки.
curl https://curl.haxx.se/ca/cacert.pem > urlfetch_cacerts.txt
Вы также можете использовать браузер для загрузки файла и его переименования.
Проверьте, где хранятся ваши cacerts. Я нашел их в
C:\Program Files (x86)\Google\google_appengine\lib\cacerts
Другие сообщить его в:
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\cacerts\urlfetch_cacerts.txt
С учетными данными администратора переименуйте файл urlfetch_cacerts.txt в другое.
Затем скопируйте загруженный файл cacerts.pem в
C:\Program Files (x86)\Google\google_appengine\lib\cacerts
И переименуйте его в urlfetch_cacerts.txt
Voila!