ssl 使用带有SIM7080(SIM7000)AT命令的TLS,如何处理证书

z3yyvxxp  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(311)

我有一个带sim7080芯片的模块。我想用NBIoT通过mqtt发送数据到我的服务器。但作为第一步,我想从http开始。
发送HTTP请求工作得很好。如果使用TLS,则会出现问题。

OK
AT+CSSLCFG="convert",2,"mycert.crt"
OK
AT+SHSSL=1,"mycert.crt"
OK
AT+SHCONF="URL","https://test.test.eu"
OK
AT+SHCONF="BODYLEN",1024
OK
AT+SHCONF="HEADERLEN",350
OK
AT+SHCONN
ERROR

是否有详细模式可以获取导致AT+SHCONN无法连接的详细信息?HTTP工作正常。可能是证书格式的问题?我下载了网站的根ca,以Chrome作为der证书。这是正确的吗?可能是windows \r\n的问题?
我将header和bodylength设置为示例中的值。可能稍后我必须在这里更改为header和body的真实的大小(如何计算出这一点?)
也许你们当中有人有所暗示。
顺祝商祺

nbewdwxp

nbewdwxp1#

在调用AT+CSSLCFG=“convert”,2,“mycert.crt”之前,您必须先将证书上载到模块(一次)
至少.pem格式是有效的。
AT+CMEE=2给出了详细的错误,但我不确定您是否获得了有关此错误的更多信息
标头和正文长度是最大长度,因此它们不是问题的原因。

8cdiaqws

8cdiaqws2#

HTTP命令并不冗长,您可以先尝试TCP/UDP命令,失败时会给予更详细的错误。
当我尝试TCP/UDP命令时,我得到:

AT+CAOPEN=0,0,"TCP","httpbin.org",443
+CAOPEN: 0,24

其中代码24表示证书已过期。
有时,内部时钟错误,则认证会因为到期日期检查而失败。
首先,查询时钟:AT+CCLK?您可能会获得:+CCLK: "80/01/06,10:34:34+00"
这是完全错误的,因为今年是2080年,每个证书都会过期。
使用以下方式设置时钟:AT+CCLK="22/06/26,22:28:00-12"
在此之后,将不会有代码24了,它会连接。
接下来的步骤有时会使用NTP或GNSS信息同步时钟。
使用TCP/UDP进行HTTPS连接的我的序列:

AT+CNTPCID=0
AT+CNTP="pool.ntp.org",-12,0,0
AT+CNTP

AT+CACID=0
AT+CSSLCFG="sslversion",0,3
AT+CASSLCFG=0,"SSL",1
AT+CASSLCFG=0,"CRINDEX",0
AT+CAOPEN=0,0,"TCP","httpbin.org",443,0

如果有错误,请检查您的SIM芯片。

weylhg0b

weylhg0b3#

@giovanni-campaner关于调制解调器时钟阻止连接的说法是完全正确的。如果您不想检查服务器证书的过期有效性,您也可以使用

AT+CSSLCFG="ignorertctime",1,1

您将遇到的下一个问题是,某些域所在的计算机为其他域提供证书。在这种情况下,您需要使用服务器名称指示(SNI)来让服务器知道您正在查找哪个证书。

AT+CSSLCFG="sni",1,"mydomain.com"

有关详细信息,请参阅my Gist

相关问题