【问题标题】:SIM 800 GPRS modem for HTTP GET and POST to AWS IoT and AWS API gateway用于 HTTP GET 和 POST 到 AWS IoT 和 AWS API 网关的 SIM 800 GPRS 调制解调器
【发布时间】:2022-01-30 03:27:53
【问题描述】:

我尝试使用 SIM 800 模块分别向 AWS 云发送和获取一些 JSON 数据。我最初是通过终端 UART 软件直接从我的 PC 上试用它并手动输入 AT 命令。

对于 Google 和 Quora 等网站,HTTP GET 通过 SSL (AT+HTTPSSL=1) 运行良好,例如,它们返回 <html> 数据。

1) 如链接 here 中所述,我首先研究了使用 HTTP 的 AWS IoT 路由。但它不仅需要 HTTP SSL 的单个证书,还需要根 CA 证书和私钥,我想除了使用 SIM 800 上的 AT 命令的单个证书之外,不可能添加这些。如果有办法这样做,那么任何人都可以详细说明它的流程和命令吗?

2) 然后我尝试走 API 路线。我在 AWS 中创建了一个 API 网关,该网关与一些云逻辑内部链接。我实际上想对 AWS 云进行 JSON 数据的 HTTP POST(技术上是 https),但我为 HTTP GET 创建了一个测试 API 网关,它添加了写入 URL 中的操作数并以 JSON 的形式发回数据。但是,通过 SSL 到 https://XXXX.execute-api.us-west-2.amazonaws.com/XXX/calc/4/2/+ 之类的 URL 的 HTTP GET 失败并返回 606 error code。在 SIM 800 606 错误代码的 SSL 应用说明中的意思是

"SSL 警报消息,立即出现致命级别的结果 终止连接”

我在这里做错了什么?

另外,我也在https://httpbin.org/ip 上尝试了基于 SSL 的 HTTP GET 并得到了相同的 606 错误。是因为 SIM 800 需要 <html> 而是得到 JSON 还是其他什么?

对于我通常通过终端软件从 PC 上的 SIM 800 上的 AT 命令例程(对于 API 网关方法):

AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","XXXX"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPSSL=1
AT+HTTPPARA="CID",1
AT+HTTPPARA="URL","https://XXXX.execute-api.us-west-2.amazonaws.com/XXX/calc/4/2/+"
AT+HTTPACTION=0

提前致谢。

【问题讨论】:

    标签: amazon-web-services http aws-api-gateway aws-iot sim800


    【解决方案1】:

    我也有同样的问题。 AWS 需要 TLS1.2,而 Simcom 只允许 TLS1.0

    【讨论】:

    • 回复了您的查询。看看对你有没有帮助。
    【解决方案2】:

    Microsoft Azure 最近升级了 TLS 要求,其效果是“如果客户端尝试在这种情况下协商 TLS 1.0,请求将失败并重置连接”。这就解释了为什么我的应用程序现在失败了,因为 SIM800 模块只支持 TLS 1.0。

    AWS 可能也做了同样的事情。似乎正在进行弃用 TLS 1.0 的举措,根据SSL and TLS, what is the Big Deal About June 30th? 2018 年 6 月 30 日是截止日期,如果您想声明 PCI 合规性,届时将不支持 TLS 1.0。

    【讨论】:

      【解决方案3】:

      实现方法是方法 2,即 API 网关。我认为不可能通过方法 1 即 AWS IoT 来做到这一点。

      @mich@patrick-fischer 的原因是正确的,我也怀疑相同但不知道解决方案。我和我的团队联系了 AWS 支持,他们告诉了我们解决方案。

      显然,您是通过 AWS CloudFront 完成的。您必须使用 API 网关的链接(在我的情况下为 https://XXXX.execute-api.us-west-2.amazonaws.com/XXX/calc/4/2/+)创建 CloudFront 分配。创建此发行版时,您可以提及是否接受传入的 HTTP、HTTPS 或两者。

      在其中一个部分(不记得该部分的名称)中,它允许您提及允许来自哪个 TLS/SSL 版本的传入请求。对于 SIM 800,TLSv1.0 是必须在 CloudFront 发行版中设置的最高支持版本。

      CloudFront 的作用是允许来自具有特定参数(例如 HTTP 版本、TLS 版本等)的来源的流量。

      【讨论】:

        【解决方案4】:

        我正在尝试在 AWS Api Gateway 中生成 自定义域 并选择 TLS 1.0,以激活您需要的 AWS Route S3 中的 AWS ACM 证书 和 DNS 确认(需要一些时间来激活),这里有一些信息:https://vintage-kitchen.com/es/faq/faq-how-long-does-aws-certificate-manager-take/(此选项在此处可视化:https://i.stack.imgur.com/RVO7y.png),带有例如,您可以通过 GPRS 从 AT 命令AWS Lambda 执行 HTTP POST 请求。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-28
          • 2017-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-08
          • 2015-12-04
          • 1970-01-01
          相关资源
          最近更新 更多