AppEngine本地开发服务器上的Braintree SDK SSLCertificateError

马科苏

在我的本地环境下使用Braintree SDK会dev_appserver.py上返回以下错误braintree.ClientToken.generate()

SSLError: SSLCertificateError:
Invalid and/or missing SSL certificate for URL:  
https://api.sandbox.braintreegateway.com:443/merchants/<merchant_id>/client_token

requests_toolbelt在服务器启动时使用

# Make requests work in GAE
import requests
from requests_toolbelt.adapters import appengine
appengine.monkeypatch()

明确排除SSL验证也不起作用(返回相同的错误消息):

appengine.monkeypatch(validate_certificate=False)

实际上,如果没有requests_toolbelt,调用时出现的错误.generate()是:

ProtocolError('Connection aborted.', error(13, 'Permission denied'))

我也试过在黑客main.py布伦特里的Python-AppEngine上项目,但我得到同样的SSL错误讯息回来。

我的开发环境:

  • MacOSX 10.11.6
  • gcloud app Python扩展1.9.63
  • Python 2.7.10
  • 要求== 2.18.4
  • Braintree == 3.39.0
  • 烧瓶== 0.12.2

注意:

  1. 部署到Google App Engine后,我可以毫无问题地获得客户端令牌
  2. 直接使用requestson https://www.braintreepayments.com/return 200,没有任何错误
马科苏

Braintree支持人员于(2017-11-20)回复了我的询问:

您收到的错误通常与运行应用程序时使用的SSL / TLS协议有关;我们的沙盒环境要求通过TLS 1.2建立连接,该要求尚未应用于生产。

经审查,看来在本地部署应用程序时使用的协议对我们的环境无效。如果应用程序设置在Google App Engine中进行了本地化,则可能是造成此问题的原因;Python使用系统提供的OpenSSL,而TLSv1.2需要OpenSSL 1.0.1c或更高版本。

因此,根本原因是我的Python版本使用了较旧的OpenSSL版本:

$ python --version
Python 2.7.10

$ python
>> import ssl
>> ssl.OPENSSL_VERSION
>> 'OpenSSL 0.9.8zh 14 Jan 2016'

解决方案是通过brew升级我的python版本:

$ brew install python
$ python2 --version
Python 2.7.14

$ python2
>> import ssl
>> ssl.OPENSSL_VERSION
>> 'OpenSSL 1.0.2m  2 Nov 2017'

然后,使用新安装的python启动我的开发服务器即可解决SSLCertificateError

python2 $appserver_path/dev_appserver.py ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 appengine 开发服务器 SDK 上强制使用 TLS 1.2

本地服务器上需要Azure SDK?

无法从Vagrant访问Google Cloud SDK for Python的本地开发服务器

如何使用Gradle安装Braintree Java服务器SDK?

将随机数传递到服务器并返回到Braintree SDK

Appengine-具有https的本地开发服务器

是否可以在 Jenkins 服务器上安装 Android SDK?

在构建服务器上安装F#4.1 SDK

在Rasa SDK中,如何从本地运行的动作服务器检索日志?

Google App Engine SDK更新后,无法通过PHPStorm 8运行本地服务器吗?

GAE / Go挂在本地开发服务器上

64位服务器(ColdFusion)上的Payflow Pro Gateway Java SDK

XMPP在Openfire服务器+ iPhone SDK上检索公共房间

用于构建服务器的Typescript 1.4 SDK?

Azure移动服务器SDK:何时评估IQueryable?

如何从Admin SDK检查与Firebase服务器的连接?

解析服务器 iOS SDK - 不同的查询

如何在解析服务器javascript sdk中递减

使用PHP SDK解析服务器聚合

访问AppEngine开发服务器上的自定义管理页面

如何在本地apache开发服务器(本地主机)上使用TLS

AppEngine:404错误,但部署服务器上的主页除外(在本地服务器上工作正常)

AppEngine开发服务器的数据查看器

如何使用UnboundID SDK通过SSL服务器证书连接到LDAP服务器?

如何为rapidoreach SDK 实现服务器到服务器的回调?

Appengine Flex 上的 UDP 服务器?

尝试在本地Google AppEngine服务器上登录时出现503错误

Google AppEngine开发应用服务器不会在本地主机上运行

我如何为开发机设置本地绑定服务器以映射到服务器上的虚拟主机