django-push-notifications
正在使用沙箱和生产证书。但是从昨天开始,它失败了以下错误。
SSLError:[Errno 1] _ssl.c:510:错误:1409442E:SSL例程:SSL3_READ_BYTES:tlsv1 alert protocol version
我们的代码或服务器没有变化。任何想法,为什么它停止工作。
UPDATE
OpenSSL 1.0.1f 2014年1月6日Ubuntu:14.04
我升级到OpenSSL 1.1.1a 2018年11月20日,但结果相同。
我还使用以下内容检查了我的python支持的TLS版本并得到了“TLS 1.3”。
python -c“import requests; print(requests.get('https://www.howsmyssl.com/a/check',verify = False).json()['tls_version'])”
有些人升级到tls 1.2其他人在无所事事后再次工作。感觉像某些苹果服务器的问题。
我们在连接代码中添加了重试逻辑,因为它遇到了其中一个糟糕的苹果服务器。
https://forums.developer.apple.com/thread/114489
关于苹果论坛https://forums.developer.apple.com/content?query=push的其他几份报告
从OpenSSL的角度来看,客户端SSL Socket连接到SSL服务器失败,因为客户端支持的SSL / TLS套接字版本都没有在服务器上启用(或支持)。
所以我的猜测是服务器已经限制了它支持的SSL / TLS的协议版本,以至于openssl客户端无法再处理它。现在只猜TLS 1.2和TLS 1.3。也许是TLS 1.1。
您是否可以将客户端OpenSSL版本更新到更高版本以查看它是否修复了连接问题?
此外,检查(如果可以)检查您在客户端启用哪些协议版本以确保启用所有最高协议版本(TLS 1.1,TLS 1.2,TLS1.3 - 如果您有openssl 1.1.1)可能会有所帮助。
看起来这是一个苹果服务器问题。它现在已经解决了。推送通知现在按预期工作。