正月休み明けに、GAE/Goのサーバを動かすとCloudStorageへのアクセスを行うコードなどで次のようなエラーが出るようになりました。
API error 6 (urlfetch: SSL_CERTIFICATE_ERROR): [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
そのときの環境は、OSX上でAppEngineのGo SDK 1.9.48を使っていて、GoogleCloudSDKは138.0.0でした。
その後gcloud beta auth application-default login
などを試すも解決せず、ずっとハマってましたがようやく解決方法を見つけました。
- Issue 13476 - googleappengine - ssl certificate error - Google App Engine - Google Project Hosting
- Issue 12588 - googleappengine - UrlFetch fails to validate SSL certificate Subject Alternate Names - Google App Engine - Google Project Hosting
原因がよくわからないので次の対応でいいのか分かりませんが、とりあえず動かすことができます。
GoのAppengineSDKの中の、google/appengine/api/urlfetch_stub.py
の以下の箇所を修正。
before
> 401 default_port = 443
after
> 401 connection_class = httplib.HTTPSConnection
> 402 default_port = 443
google-cloud-sdkの方のappengine SDKを使っている場合は、
google-cloud-sdk/platform/google_appengine/google/appengine/api/urlfetch_stub.py
に同様の修正をすると解決します。
appengine SDKのバージョンが変わると、修正箇所が変わるかもです。