我尝试使用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
提前致谢。
答案 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)的来源的流量。