如何使用SSL将sim800l连接到代理?

如何使用SSL将sim800l连接到代理?,ssl,mqtt,esp32,broker,sim800,Ssl,Mqtt,Esp32,Broker,Sim800,我正在尝试连接到AWS上的蚊子代理,端口为8883,但到目前为止我还没有成功。 我正在使用TinyGSM和PubSubClient库 GSM模块连接到互联网,在没有SSL的代理中可以完美工作。但当我尝试切换到SSL时,他无法连接,MQTT客户机返回-2。但是,正如您在PubSub文档中看到的那样,这个错误不是很清楚 #定义MQTT_连接_失败-2 这些是它尝试连接到代理所执行的AT命令 AT+CIPRXGET=4,0 +CIPRXGET: 4,0,0 OK AT+CIPSTATUS=0 +

我正在尝试连接到AWS上的蚊子代理,端口为8883,但到目前为止我还没有成功。 我正在使用TinyGSM和PubSubClient库

GSM模块连接到互联网,在没有SSL的代理中可以完美工作。但当我尝试切换到SSL时,他无法连接,MQTT客户机返回-2。但是,正如您在PubSub文档中看到的那样,这个错误不是很清楚

#定义MQTT_连接_失败-2

这些是它尝试连接到代理所执行的AT命令

AT+CIPRXGET=4,0

+CIPRXGET: 4,0,0

OK
AT+CIPSTATUS=0

+CIPSTATUS: 0,0,"TCP","3.13.162.221","8883","CLOSED"

OK
* Trying to connect to the MQTT Broker: <broker_url>
AT+CIPCLOSE=0,1

ERROR
AT+CIPSSL=1

OK
AT+CIPSTART=0,"TCP",<broker_url>,8883

OK
Failed to reconnect to the broker.
Status: -2
问题是,如何使用sim800l模块通过SSL连接到MQTT代理

信息
调制解调器:SIMCOM_SIM800L R14.18
主处理器板:TTGO-T-Call ESP32

TinyGSM版本:0.10.5

AWS物联网代理需要使用SSL客户端证书。

您的
AT+CIPCLOSE=0,1
行在上面的示例中生成了一个错误……这不是问题的根源,不是错误代码2吗???@JDAllen我不确定。CIPCLOSE关闭TCP连接,如果没有打开的连接,这不是很自然的错误吗?您最终修复了它吗?我和你面临着同样的问题@弗朗西斯科·卡维恩切斯不。。。不幸的是,我在这方面没有任何进展是的,但我正在使用TinyGSClient Secure,它不起作用,我还试图通过AT命令更改模块中的证书,但即使这样也不起作用,我对您选择的堆栈不熟悉,因此,我只能提供一些建议:需要将证书提供给堆栈中处理SSL的组件。我曾经使用过在固件中执行SSL的GSM终端,因此套接字处理对在其上运行的应用程序是透明的。在这样的设置中调试连接问题并不容易。在另一端,有一些堆栈,其中SSL重提升是在softwarelayer中完成的。问题的另一个来源是带有客户端证书的PEM文件的格式。也许你需要先改变信仰。@Larissansantos嘿,我也在为同样的问题挣扎。你设法解决了吗?@ArturKędzior没有任何进展that@LarissaSantos啊,那太糟糕了。这就是我要说的一点:。如果你检查问题,你会发现我已经和Lilygo的dev谈过了,他正在做“工作示例”。
void setupGSM() {
  SerialMon.println("Setup GSM...");
  
  modem.sendAT("+SSLOPT=1,1");
  if (modem.waitResponse() != 1) {
    SerialMon.printf("modem +SSLOPT=1,1 failed");
  }
  while (!modem.gprsConnect(APN, APN_USER, APN_KEY)) {
    SerialMon.println("GPRS Connection Failed");
    modem.restart();
    delay(1000);
  }
  SerialMon.println("GPRS Connection Success");
}

void reconnectMQTT() {
  while (!MQTT.connected()) {
    SerialMon.print("* Trying to connect to the MQTT Broker: ");
    SerialMon.println(BROKER_MQTT);
    initMQTT();

    if (MQTT.connect(ID_MQTT, MQTT_USERNAME, MQTT_KEY)) {
      SerialMon.println("Successfully connected to the MQTT broker!");
      MQTT.subscribe(RECEIVED_CREDITS);
    }
    else {
      SerialMon.println("Failed to reconnect to the broker.");
      SerialMon.print("Status: ");
      SerialMon.println(MQTT.state());
      delay(2000);
    }
  }
}