Appengine开发服务器调用Stripe失败,TLS版本过低求助
解决Python 2.7.11调用Stripe时的TLS 1.2报错问题
哥们,我之前也踩过这个一模一样的坑!Stripe早在2018年就彻底禁用了低于TLS 1.2的测试环境请求,生产环境也早就不支持了。Python 2.7.11本身其实是具备TLS 1.2支持的,但默认的HTTP客户端配置可能没启用这个协议版本,所以才会触发这个报错。给你几个靠谱的解决办法:
升级依赖库,让请求默认适配TLS 1.2
先把requests和Stripe的Python库都升级到兼容Python 2.7的最新版本,执行这两个命令:pip install --upgrade requests[security] pip install --upgrade striperequests[security]会自动安装cryptography等安全依赖,帮requests默认启用TLS 1.2;新版Stripe库也已经做了协议适配,大部分情况升级后就能解决问题。手动强制请求使用TLS 1.2(升级后仍有问题时用)
如果升级依赖后还是不行,那就手动给Stripe的请求会话挂载一个强制用TLS 1.2的适配器,代码如下:import requests from requests.adapters import HTTPAdapter from urllib3.poolmanager import PoolManager import ssl import stripe # 自定义适配器,强制使用TLS 1.2协议 class TLS12Adapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): self.poolmanager = PoolManager( num_pools=connections, maxsize=maxsize, block=block, ssl_version=ssl.PROTOCOL_TLSv1_2 ) # 配置Stripe使用这个适配器 stripe.api_key = "你的Stripe API密钥" session = requests.Session() session.mount("https://", TLS12Adapter()) stripe.default_http_client = session这段代码会让所有Stripe的API请求都强制走TLS 1.2协议,绕过默认配置的限制。
极端情况:检查服务器SSL环境
极少数情况下,如果你的服务器系统的OpenSSL版本太低(比如低于1.0.1g),即使Python支持TLS 1.2也可能无法生效,这时候需要升级服务器的OpenSSL到1.0.1g及以上版本。
内容的提问来源于stack exchange,提问作者Mak
相关产品推荐
相关产品推荐

