SIM 800 GPRS调制解调器,用于HTTP GET和POST到AWS IoT和AWS API网关

时间:2018-04-18 07:40:37

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

我尝试使用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云执行HTTP POST(技术上是https)JSON数据,但我为HTTP GET创建了一个测试API网关,它添加了在URL中编写的操作数,并以JSON的形式发回数据。然而,通过SSL的HTTP GET到https://XXXX.execute-api.us-west-2.amazonaws.com/XXX/calc/4/2/+之类的网站失败并显示606 error code。在SSL应用程序说明中,SIM 800 606错误代码表示

  

“具有致命结果级别的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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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。

答案 1 :(得分:1)

方法是方法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,必须在CloudFront发行版中设置TLSv1.0是受支持的最高版本。

CloudFront所做的是允许来自具有某些参数(例如HTTP版本,TLS版本.etc)的来源的流量。