【问题标题】:AWS IOT connection is getting closed on IPAD OS v12.1.1AWS IOT 连接在 IPAD OS v12.1.1 上关闭
【发布时间】:2019-05-09 13:04:11
【问题描述】:

当我们在 ios 版本 12.1.1 上使用 wss 协议连接到 AWS IoT 时,我们能够成功连接到 IoT,但立即我们可以看到 IoT 触发了 onError 事件,然后连接关闭。它尝试再次重新连接,但没有任何运气。我们从 IoT 得到的错误是“{IsTrusted: true}”。 我们没有使用任何证书,只使用配置文件访问密钥和密钥。

相同的构建能够在 ios 12.0.1、12.1 上正确连接

IOS版本:12.1.1(非工作版本)

AWS 物联网 SDK:2.0.0

【问题讨论】:

  • 这甚至不是一个问题。除非您将帖子构建为问题,否则您不会获得任何帮助。描述您的期望、正在发生的事情以及您尝试过的事情。我也遇到了 iOS 12.1.1 的 AWS IoT 连接问题。我假设它与 Apple 在 12.1.1 中颁布的新证书透明度政策有关:developer.apple.com/documentation/ios_release_notes/…
  • @darkmatter 我已经编辑了描述。您对当前问题有任何解决方案吗?
  • 到目前为止我还没有成功。我尝试使用 XCode 应用程序传输安全设置并为我的域和 aws 域添加例外,但未成功。我什至尝试“允许任意负载”只是为了测试它......没有骰子。我在尝试连接时看到以下记录:TCP Conn 0x28395f780 事件 1。错误:0 TCP Conn 0x28395f780 完成。 fd:26,错误:0 TCP Conn 0x28395f780 开始 SSL 协商信任评估失败:[leaf SystemTrustedCTRequired] CFNetwork SSLHandshake failed (-9807) TCP Conn 0x28395f780 SSLHandshake failed (-9807)
  • 如果我发现任何新的东西@kalyan,我很乐意在这里报告
  • 如果提供的答案解决了您的问题。请接受它作为正确答案。如果没有,请用任何其他问题或意见评论答案。谢谢。

标签: ios amazon-web-services iot aws-iot


【解决方案1】:

iOS 12.1.1 引入了 Apple 的新证书透明度政策。来自 Apple 的发行说明:

iOS 12.1.1 要求在 2018 年 10 月 15 日之后颁发的受公众信任的传输层安全 (TLS) 服务器身份验证证书符合证书透明度政策,才能在 Apple 平台上被评估为受信任。

这项政策正在成为 Google 已在其 Chrome 浏览器中强制执行的广泛标准。亚马逊知道这即将到来,并响应这些新政策,发布了对其 MQTT 后端 (AWS IoT) 的更新,以包括对新端点的适当认证。见https://aws.amazon.com/blogs/iot/aws-iot-core-ats-endpoints/:

您必须为您账户中的每个区域明确请求 Amazon Trust Services 终端节点。您拥有的任何现有客户端点很可能是 VeriSign 端点。如果您的终端节点在第一个子域的末尾有“-ats”,那么它就是一个 Amazon Trust Services 终端节点。例如,“asdfasdf-ats.iot.us-east-2.amazonaws.com”是一个 ATS 端点。

简而言之,对于我的 iOS 应用程序,我们使用的是 AWS 提供的 MQTT 端点 asdfasdf.iot.us-east-2.amazonaws.com(只是一个示例),没有 -ats。我将端点更新为 asdfasdf-ats.iot.us-east-2.amazonaws.com,我们能够完成 SSL 握手。

我希望这对您的问题有所帮助!祝你好运!

【讨论】:

  • 就我而言,有些不同。似乎 AWS 已经将我的端点从 prefix.iot.xxx 更改为 prefix-ats.iot.xxx。
  • 您好,事实上,AWS 自动为所有 MQTT 端点提供了-ats 端点。确保您的客户端指向包含-ats 的正确端点。此答案特定于 iOS 12.1 工作和 iOS 12.1.1 不工作(根据 OPs 问题)。如果您的客户端应用程序不是这种情况,那么您的问题就不同了。
  • 我花了一整天的时间尝试不同的解决方案,包括在 info.plist 中为 ATS 设置添加例外。这个解决方案为我解决了这个问题。奇怪的是,我能够在调试模式下运行应用程序时使用旧端点连接到 aws iot,但不能在应用程序的发布版本中。
  • 这是我与新的 -ats 端点一起使用的证书 - amazontrust.com/repository/AmazonRootCA1.pem
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2020-08-03
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2018-07-27
相关资源
最近更新 更多