1

我在 SIM800L 中使用 SSL 证书固定时遇到问题。我可以同时使用 AT+HTTPSSSL=0 和 AT+HTTPSSSL=1 成功地发出 GET 请求。但是,该模块不会检查提供的服务器证书是否有效。根据这个线程,我已将证书上传到模块的文件系统。我可以使用 AT 命令成功设置证书:

AT+SSLSETCERT=cert.cer

AT+SSLSETCERT=cert.cer
OK

+SSLSETCERT: 0

但是,这样做似乎不会阻止使用其他证书,例如,我尝试过使用 google.com 和 mywebsite.com(为此我已经导入了证书)。所以我更深入地挖掘并找到 SSLOPT 命令,它应该(根据SSL 文档)阻止无效证书。使用 AT+SSLOPT=0,0 设置标志,然后执行 HTTPS 请求会得到 605 错误:

+HTTPACTION: 0,605,0

文档说这意味着“SSL 无法建立通道”。我对此的理解是服务器提供了一个无效的证书(因此,与加载 AT+SSLSETCERT 的证书不同)。如果我理解正确,我希望在向 google.com 或 selfsigned.badssl.com 发出请求时会出现此错误。问题是,即使我向 mywebsite.com 发出请求,我也会得到这个,为此我将证书加载到存储中。

我用两个不同的模块(SIM800L 和 SIM808)尝试了类似的过程并得到了类似的结果。难道我做错了什么?

以下是对 mywebsite.com 的请求的完整命令列表及其回复:

AT+CREG?
+CREG: 0,5

OK
AT+SAPBR=1,1

AT+SAPBR=1,1
OK
AT+HTTPINIT

AT+HTTPINIT
OK
AT+HTTPPARA="URL","mywebsite.com"

AT+HTTPPARA="URL","mywebsite.com"
OK
AT+HTTPPARA="CID",1

AT+HTTPPARA="CID",1
OK
AT+HTTPSSL=1

AT+HTTPSSL=1
OK
AT+SSLSETCERT=cert.cer

AT+SSLSETCERT=cert.cer
OK

+SSLSETCERT: 0
AT+SSLOPT=0,0

AT+SSLOPT=0,0
OK
AT+HTTPACTION=0

AT+HTTPACTION=0
OK
AT+HTTPREAD

AT+HTTPREAD
OK

+HTTPACTION: 0,605,0 <<<-------This shouldn't be 605
AT+HTTPTERM

AT+HTTPTERM
OK
AT+SAPBR=0,1

AT+SAPBR=0,1
OK
4

2 回答 2

0

我也被这个问题困扰了很长时间。解决方案结果如下 - 应在站点地址中指定 https 端口。事实并非如此:

AT + HTTPPARA = "URL", "mywebsite.com"

所以:

AT + HTTPPARA = "URL", "mywebsite.com:443"
于 2020-06-22T13:20:07.630 回答
0

我在这里找到了 simcom 的关于 ssl 的文档,并在其中看到了一个示例。(第 19 页)

4.5 HTTPS 的 HTTPS 获取方法

// Use HTTPS download data
AT+HTTPINIT
OK
//Init HTTP service
AT+HTTPPARA="CID",1
OK
AT+HTTPPARA="URL","www.gmail.com" OK
AT+HTTPPARA="REDIR",1
OK
//Set parameters for HTTP session
AT+HTTPSSL=1
OK
//Enable HTTPS function
AT+HTTPACTION=0
OK
+HTTPACTION: 0,200,84200
//GET session start
//GET successfully
AT+HTTPREAD
+HTTPREAD: 84200 …. OK
//Read the data of HTTP server
AT+HTTPTERM
OK
于 2020-10-29T17:14:56.583 回答