【问题标题】:SSLError: [Errno 1] _ssl.c:510: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol versionSSLError:[Errno 1] _ssl.c:510:错误:1409442E:SSL 例程:SSL3_READ_BYTES:tlsv1 警报协议版本
【发布时间】:2019-03-13 13:56:25
【问题描述】:

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

SSLError: [Errno 1] _ssl.c:510: error:1409442E:SSL 例程:SSL3_READ_BYTES:tlsv1 警报协议版本

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

更新

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

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

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

python -c "导入请求;打印(requests.get('https://www.howsmyssl.com/a/check', verify=False).json()['tls_version'])"

【问题讨论】:

  • 同样的事情发生在我们身上,还没有解决办法
  • 我们也看到有时连接会成功,有时却不会

标签: ios openssl apple-push-notifications django-push-notifications


【解决方案1】:

有些人升级到 tls 1.2 其他人在无所事事后又开始工作了。 感觉像是某些苹果服务器的问题。

我们在连接代码中添加了重试逻辑,以应对其中一个坏苹果服务器。

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

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

【讨论】:

    【解决方案2】:

    从 OpenSSL 的角度来看,客户端 SSL 套接字与 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.

    【讨论】:

    • 嗨 Shane,我用更多信息更新了原始问题。谢谢。
    • 这条消息来自哪里(tls 服务器或 tls 客户端)?你有来自另一边的日志吗?你能控制对方吗?它是一直发生还是偶尔发生?如果对方是苹果,而且它只是有时会发生,这听起来像是苹果服务器的问题,这取决于你遇到的苹果服务器。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-08
      • 2016-03-17
      • 1970-01-01
      • 2016-04-03
      • 2018-12-15
      • 1970-01-01
      • 2018-02-23
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多