Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AppEngine Paypal集成使用Python在本地主机上提供SSLCertificateError_Python_Google App Engine_Ssl Certificate_Paypal Rest Sdk_Dev Appserver 2 - Fatal编程技术网

AppEngine Paypal集成使用Python在本地主机上提供SSLCertificateError

AppEngine Paypal集成使用Python在本地主机上提供SSLCertificateError,python,google-app-engine,ssl-certificate,paypal-rest-sdk,dev-appserver-2,Python,Google App Engine,Ssl Certificate,Paypal Rest Sdk,Dev Appserver 2,我正在整合我的AppEngine项目。当使用我的本地dev_appserver尝试在PayPal沙箱上创建付款时,出现以下错误: SSLCertificateError: Invalid and/or missing SSL certificate for URL: https://api.sandbox.paypal.com/v1/oauth2/token 因此,我尝试提供正确的pem文件,从下载并设置正确的ssl\u选项属性: # Setting up the correct path t

我正在整合我的AppEngine项目。当使用我的本地dev_appserver尝试在PayPal沙箱上创建付款时,出现以下错误:

SSLCertificateError: Invalid and/or missing SSL certificate for URL: https://api.sandbox.paypal.com/v1/oauth2/token
因此,我尝试提供正确的pem文件,从下载并设置正确的
ssl\u选项
属性:

# Setting up the correct path to the .pem file
cert = os.path.join(ROOT, 'certs/api.sandbox.paypal.com_SHA-2_01132018.pem')
logger.info("Using SSL certificate: %s", cert)
return Api(
    mode=get_paypal_environment(), # sandbox or live
    client_id=flask.current_app.config["PAYPAL_CLIENT_ID"],
    client_secret=flask.current_app.config["PAYPAL_CLIENT_SECRET"],
    ssl_options={"cert": cert}
)
PayPalRestSDK文档提供了有关如何提供证书的详细信息。我已经仔细检查了创建的路径是否正确

我发现了一个bug报告,其中谈到了一个类似的问题

此外,我尝试了建议的解决方案,但仍然不起作用

在一个实时实例上,在appspot上,这一切都可以完美地运行

以下是my requirements.txt的相关部分:

Flask==0.10.1
itsdangerous==0.24
paramiko==1.15.1
pycrypto==2.6.1
Flask-OAuthlib==0.9.1
google-api-python-client==1.4.0
paypalrestsdk==1.11.1
requests[security]==2.9.1

有人有相同的问题吗?

好的,我相信我已经解决了这个问题,至少在我的案例中,我将在下面描述

这似乎是由于两个问题:

问题#1)PayPal正在迁移到仅支持TLS1.2,并已开始切换沙箱URL,稍后将切换生产URL。这就解释了为什么只有在从沙箱连接时才会出现故障,以及为什么它过去可以工作,但现在不行了。更多关于这个

问题2)我在本地安装的Python不支持TLS1.2。以下是一种简单的检查方法:

$ python
>>> import ssl
>>> print ssl._PROTOCOL_NAMES
如果没有列出
协议\u TLSv1\u 2
,这肯定是问题所在。在我的例子中,我使用的是MacOSX10.11上Python的内置版本,它在OpenSSL上有一个非常旧的内置版本

那么如何修复它呢?嗯,在我的例子中,这很有效(主要是抄袭自):

现在,如果您运行上面列出的测试,您应该会看到列出的1.2协议


这会让一切恢复正常,祝你好运

好的,我相信我已经解决了这个问题,至少在我的案例中,我将在下面描述

这似乎是由于两个问题:

问题#1)PayPal正在迁移到仅支持TLS1.2,并已开始切换沙箱URL,稍后将切换生产URL。这就解释了为什么只有在从沙箱连接时才会出现故障,以及为什么它过去可以工作,但现在不行了。更多关于这个

问题2)我在本地安装的Python不支持TLS1.2。以下是一种简单的检查方法:

$ python
>>> import ssl
>>> print ssl._PROTOCOL_NAMES
如果没有列出
协议\u TLSv1\u 2
,这肯定是问题所在。在我的例子中,我使用的是MacOSX10.11上Python的内置版本,它在OpenSSL上有一个非常旧的内置版本

那么如何修复它呢?嗯,在我的例子中,这很有效(主要是抄袭自):

现在,如果您运行上面列出的测试,您应该会看到列出的1.2协议


这会让一切恢复正常,祝你好运

我也有同样的问题。它肯定曾经在我的设置中起作用,我没有改变代码中的任何内容来破坏它。我也有同样的问题。它肯定曾经在我的设置中起作用,我没有在代码的这一部分做任何修改来破坏它。