我有一个带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的真实的大小(如何计算出这一点?)
也许你们当中有人有所暗示。
顺祝商祺
3条答案
按热度按时间nbewdwxp1#
在调用AT+CSSLCFG=“convert”,2,“mycert.crt”之前,您必须先将证书上载到模块(一次)
至少.pem格式是有效的。
AT+CMEE=2给出了详细的错误,但我不确定您是否获得了有关此错误的更多信息
标头和正文长度是最大长度,因此它们不是问题的原因。
8cdiaqws2#
HTTP命令并不冗长,您可以先尝试TCP/UDP命令,失败时会给予更详细的错误。
当我尝试TCP/UDP命令时,我得到:
其中代码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连接的我的序列:
如果有错误,请检查您的SIM芯片。
weylhg0b3#
@giovanni-campaner关于调制解调器时钟阻止连接的说法是完全正确的。如果您不想检查服务器证书的过期有效性,您也可以使用
您将遇到的下一个问题是,某些域所在的计算机为其他域提供证书。在这种情况下,您需要使用服务器名称指示(SNI)来让服务器知道您正在查找哪个证书。
有关详细信息,请参阅my Gist