Django paypalrestsdk error - OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
Django paypalrestsdk error - OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
我在 Django 上编程并使用 paypalrestsdk https://github.com/paypal/PayPal-Python-SDK
我收到这个错误:
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
基本上我已经创建了 BillingPlan(代码片段 https://gist.github.com/axilaris/2f9cf8f5c27a8a2095c5c9abf0dc4121),并且出现了:
Payment created successfully
2018-05-08 22:44:45,358 INFO Request[POST]: https://api.sandbox.paypal.com/v1/oauth2/token
2018-05-08 22:44:45,358 DEBUG Level: sandbox
2018-05-08 22:44:45,358 DEBUG Request:
Headers: {'Authorization': 'Basic QVZ2cEhjMExScXFkcEFQZy1QZm1DU19jVlFNYTV1V3lsaXpBMXRpMDRjcm4tZF9jbWdyVFF5N0ZQOVZOcnlfdXRZN0IwZk91cEJSQlluVzM6RUpIcV9GLWwxbmNJLTY3YmFLYmREcWRJMVMtcGNOWkxwWjdvX29mcG10eGQ4ZlVRM2drQTFQR1J5ZzBOZER6VDY1dE5URlY2Y29lWDVVdHM=', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json', 'User-Agent': 'PayPalSDK/PayPal-Python-SDK 1.13.1 (requests 2.12.1; python 3.6.3; OpenSSL 1.0.2k 26 Jan 2017)', 'PayPal-Request-Id': 'b337cb66-b036-4a0a-9f70-aaa7011e73bb'}
Body: grant_type=client_credentials
2018-05-08 22:44:45,362 DEBUG Starting new HTTPS connection (1): api.sandbox.paypal.com
From cffi callback <function _verify_callback at 0x12972a268>:
Traceback (most recent call last):
File "/Users/some/Documents/project/somedotcom/somedotcomenv/lib/python3.6/site-packages/OpenSSL/SSL.py", line 313, in wrapper
_lib.X509_up_ref(x509)
...
File "/Users/some/Documents/project/somedotcom/somedotcomenv/lib/python3.6/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
可以在此处找到更完整的痕迹细节:
https://gist.github.com/axilaris/c181aaaa8261add4240fb2d042bd1ffc
如何解决此错误?谢谢。
我的环境:
pyOpenSSL==17.5.0
paypalrestsdk==1.13.1
Django==1.11.7
cryptography==2.1.3
PayPal 的 API require TLS 1.2 我的猜测是您安装的底层 OpenSSL 版本太旧,无法支持它。
使用以下内容确定您安装的 OpenSSL 版本:
>>> import ssl
>>> print ssl.OPENSSL_VERSION
OpenSSL 1.0.2m 2 Nov 2017
如果您使用的是低于 1.0.1 的版本,您可能需要 upgrade it using brew。根据我的经验,Mac OS X 可能有相当过时的版本;我认为我的低至 0.9.8。
升级 OpenSSL 并确认在 python shell 中看到新版本后,您可以通过 运行 您的代码对其进行测试。如果它仍然不起作用,我建议 运行 以下内容以获得有关连接健康状况的更详细的细节:
openssl s_client -showcerts -connect api.sandbox.paypal.com:443
我在 Django 上编程并使用 paypalrestsdk https://github.com/paypal/PayPal-Python-SDK
我收到这个错误:
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
基本上我已经创建了 BillingPlan(代码片段 https://gist.github.com/axilaris/2f9cf8f5c27a8a2095c5c9abf0dc4121),并且出现了:
Payment created successfully
2018-05-08 22:44:45,358 INFO Request[POST]: https://api.sandbox.paypal.com/v1/oauth2/token
2018-05-08 22:44:45,358 DEBUG Level: sandbox
2018-05-08 22:44:45,358 DEBUG Request:
Headers: {'Authorization': 'Basic QVZ2cEhjMExScXFkcEFQZy1QZm1DU19jVlFNYTV1V3lsaXpBMXRpMDRjcm4tZF9jbWdyVFF5N0ZQOVZOcnlfdXRZN0IwZk91cEJSQlluVzM6RUpIcV9GLWwxbmNJLTY3YmFLYmREcWRJMVMtcGNOWkxwWjdvX29mcG10eGQ4ZlVRM2drQTFQR1J5ZzBOZER6VDY1dE5URlY2Y29lWDVVdHM=', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json', 'User-Agent': 'PayPalSDK/PayPal-Python-SDK 1.13.1 (requests 2.12.1; python 3.6.3; OpenSSL 1.0.2k 26 Jan 2017)', 'PayPal-Request-Id': 'b337cb66-b036-4a0a-9f70-aaa7011e73bb'}
Body: grant_type=client_credentials
2018-05-08 22:44:45,362 DEBUG Starting new HTTPS connection (1): api.sandbox.paypal.com
From cffi callback <function _verify_callback at 0x12972a268>:
Traceback (most recent call last):
File "/Users/some/Documents/project/somedotcom/somedotcomenv/lib/python3.6/site-packages/OpenSSL/SSL.py", line 313, in wrapper
_lib.X509_up_ref(x509)
...
File "/Users/some/Documents/project/somedotcom/somedotcomenv/lib/python3.6/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
可以在此处找到更完整的痕迹细节: https://gist.github.com/axilaris/c181aaaa8261add4240fb2d042bd1ffc
如何解决此错误?谢谢。
我的环境:
pyOpenSSL==17.5.0
paypalrestsdk==1.13.1
Django==1.11.7
cryptography==2.1.3
PayPal 的 API require TLS 1.2 我的猜测是您安装的底层 OpenSSL 版本太旧,无法支持它。
使用以下内容确定您安装的 OpenSSL 版本:
>>> import ssl
>>> print ssl.OPENSSL_VERSION
OpenSSL 1.0.2m 2 Nov 2017
如果您使用的是低于 1.0.1 的版本,您可能需要 upgrade it using brew。根据我的经验,Mac OS X 可能有相当过时的版本;我认为我的低至 0.9.8。
升级 OpenSSL 并确认在 python shell 中看到新版本后,您可以通过 运行 您的代码对其进行测试。如果它仍然不起作用,我建议 运行 以下内容以获得有关连接健康状况的更详细的细节:
openssl s_client -showcerts -connect api.sandbox.paypal.com:443