SSLError: [Errno 1] _ssl.c:510: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

SSLError: [Errno 1] _ssl.c:510: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

django-push-notifications 正在使用沙盒和生产证书。但从昨天开始,它因以下错误而失败。

SSLError: [Errno 1] _ssl.c:510: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

我们的代码或服务器没有变化。任何想法,为什么它停止工作。

更新

OpenSSL 1.0.1f 2014 年 1 月 6 日 Ubuntu: 14.04

我于 2018 年 11 月 20 日升级到 OpenSSL 1.1.1a,但结果相同。

我还使用以下方法检查了我的 python 支持的 TLS 版本并得到了 "TLS 1.3"。

python -c "import requests; print(requests.get('https://www.howsmyssl.com/a/check', verify=False).json()['tls_version'])"

从 OpenSSL 的角度来看,客户端与 SSL 服务器的 SSL 套接字连接失败,因为客户端支持的 SSL/TLS 套接字版本中的 none 在服务器上启用(或支持) .

所以我的猜测是服务器限制了它支持的 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.

有些人升级到 tls 1.2 其他人在什么也没做之后又开始工作了。 感觉像是某些苹果服务器的问题。

我们在连接代码中添加了重试逻辑,以防它命中这些坏苹果服务器之一。

https://forums.developer.apple.com/thread/114489

苹果论坛上的其他几篇报道 https://forums.developer.apple.com/content?query=push

看起来是苹果服务器的问题。现在已经解决了。推送通知现在按预期工作。