我在 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