【问题标题】:MQTT certificates for AT commands on Simcom deviceSimcom 设备上 AT 命令的 MQTT 证书
【发布时间】:2019-08-30 17:33:07
【问题描述】:

我正在研究如何将 MQTT 用于谷歌云。我已经提到,我没有找到关于 AT 命令和 Google Cloud MQTT 的具体文档

我正在使用 Simcom 7600 模块

AT documentation

文档说它要求这样做:

+CSSLCFG: "sslversion",(0-9),(0-4)
+CSSLCFG: "authmode",(0-9),(0-3)
+CSSLCFG: "ignorelocaltime",(0-9),(0,1)
+CSSLCFG: "negotiatetime",(0-9),(10-300)
+CSSLCFG: "cacert",(0-9),(5-128)
+CSSLCFG: "clientcert",(0-9),(5-128)
+CSSLCFG: "clientkey",(0-9),(5-128)

ca certs generation Google cloud

所以我生成了 RSA 密钥:

openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
#X.509 certificate for iot device in Google Cloud
openssl req -x509 -nodes -newkey rsa:2048 -keyout rsa_private.pem \
-out rsa_cert.pem -subj "/CN=unused"

之后,我想根据 musquito 设置和这个 python 示例 MQTT SIMCOM 7000 example 使用以下命令上传证书:

MQTT_URL = "mqtt.googleapis.com"
CERTS_FOLDER = 'certs'
CA_NAME = 'rsa_cert.pem'  # cacert 'mosquitto-ca.crt'
CERT_NAME = 'rsa_private.pem'  # clientcert "mosquitto.crt"
KEY_NAME = 'client.key'  # client key "mosquitto.key"

我将示例修改为模块的波特率和正确的端口。我已经用它来打电话和发短信了,所以我知道它可以工作。

    AT('+CFSINIT')
    with open(os.path.join(CERTS_FOLDER, CA_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(CA_NAME, len(data)), success="DOWNLOAD")
        send(data)
    with open(os.path.join(CERTS_FOLDER, CERT_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(CERT_NAME, len(data)), success="DOWNLOAD")
        send(data)
    with open(os.path.join(CERTS_FOLDER, KEY_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(KEY_NAME, len(data)), success="DOWNLOAD")
        send(data)
    AT('+CFSTERM')

我得到的回复是:ERROR 可悲的是所有证书。这部分的帮助会很好:) 提前致谢。

【问题讨论】:

  • 通过运行AT+CMEE=2,您可能会获得比ERROR更多的详细信息。

标签: google-cloud-platform mqtt iot x509certificate at-command


【解决方案1】:

您执行的 AT 命令似乎不适用于 SIM7600 系列模块。请参考以下示例并按照顺序进行。

2019-12-02 12:40:05:201[Recv<-]
+CPIN: READY

2019-12-02 12:40:06:823[Recv<-]
SMS DONE

2019-12-02 12:40:13:397[Recv<-]
PB DONE

2019-12-02 12:40:41:207[Send->]AT+CSQ
2019-12-02 12:40:41:214[Recv<-]
+CSQ: 29,99                                          // Check signal strength

OK

2019-12-02 12:40:42:861[Send->]AT+COPS?
2019-12-02 12:40:42:869[Recv<-]
+COPS: 0,0,"IND airtel airtel",7                       // Network operator

OK

2019-12-02 12:40:45:244[Send->]AT+CREG?
2019-12-02 12:40:45:248[Recv<-]
+CREG: 0,1                                            // Registration status

OK

2019-12-02 12:40:47:090[Send->]AT+CGATT?
2019-12-02 12:40:47:095[Recv<-]
+CGATT: 1

OK

2019-12-02 12:43:44:560[Send->]AT+CCERTLIST
2019-12-02 12:43:44:572[Recv<-]
+CCERTLIST: "cacert.pem"
+CCERTLIST: "clientcert.pem"
+CCERTLIST: "clientkey.pem"

OK

2019-12-02 12:43:55:518[Send->]AT+CCERTDELE="cacert.pem"                    // Delete stored certificates
2019-12-02 12:43:55:529[Recv<-]
OK

2019-12-02 12:44:04:807[Send->]AT+CCERTDELE="clientcert.pem"
2019-12-02 12:44:04:816[Recv<-]
OK

2019-12-02 12:44:16:405[Send->]AT+CCERTDELE="clientkey.pem"
2019-12-02 12:44:16:415[Recv<-]
OK

2019-12-02 12:44:31:519[Send->]AT+CCERTDOWN="clientcert.pem",1225               // Downloading client certificate
2019-12-02 12:44:31:527[Recv<-]
>
2019-12-02 12:44:33:600[Recv<-]-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

2019-12-02 12:44:54:930[Send->]AT+CCERTLIST
2019-12-02 12:44:54:939[Recv<-]A
OK

2019-12-02 12:44:57:573[Send->]AT+CCERTLIST
2019-12-02 12:44:57:580[Recv<-]
+CCERTLIST: "clientcert.pem"

OK

2019-12-02 12:45:11:073[Send->]AT+CCERTDOWN="clientkey.pem",1679                  // Downloading client private key
2019-12-02 12:45:11:080[Recv<-]
>
2019-12-02 12:45:12:801[Recv<-]-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

OK

2019-12-02 12:45:23:584[Send->]AT+CCERTDOWN="cacert.pem",1188            // Downloading Root CA
2019-12-02 12:45:23:595[Recv<-]
>
2019-12-02 12:45:25:234[Recv<-]-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

OK

2019-12-02 12:45:32:619[Send->]AT+CCERTLIST                           // View list of certifactes stored
2019-12-02 12:45:32:630[Recv<-]
+CCERTLIST: "cacert.pem"
+CCERTLIST: "clientcert.pem"
+CCERTLIST: "clientkey.pem"

OK

2019-12-02 12:45:40:685[Send->]AT+CSSLCFG="sslversion",0,4      // Set the SSL version for SSL context
2019-12-02 12:45:40:694[Recv<-]
OK

2019-12-02 12:45:41:955[Send->]AT+CSSLCFG="authmode",0,2     // Set the authentication mode(2 = verify server and client) of the SSL context
2019-12-02 12:45:41:965[Recv<-]
OK

2019-12-02 12:45:43:204[Send->]AT+CSSLCFG="cacert",0,"cacert.pem"   // Set the server root CA of the SSL context
2019-12-02 12:45:43:213[Recv<-]
OK

2019-12-02 12:45:44:430[Send->]AT+CSSLCFG="clientcert",0,"clientcert.pem"    //Set the client certificate of the SSL context
2019-12-02 12:45:44:439[Recv<-]
OK

2019-12-02 12:45:45:746[Send->]AT+CSSLCFG="clientkey",0,"clientkey.pem"   // Set the client key of the SSL context
2019-12-02 12:45:45:755[Recv<-]
OK

2019-12-02 12:45:47:119[Send->]AT+CMQTTSTART     // start MQTT service, activate PDP context
2019-12-02 12:45:47:134[Recv<-]
+CMQTTSTART: 0

OK

2019-12-02 12:45:49:313[Send->]AT+CMQTTACCQ=0,"SIMCom_client01",1   // Acquire one client which will connect to a MQTT server
2019-12-02 12:45:49:321[Recv<-]
OK

2019-12-02 12:45:51:844[Send->]AT+CMQTTSSLCFG=0,0   // Set the SSL context to be used in the SSL connection
2019-12-02 12:45:51:851[Recv<-]
OK

2019-12-02 12:45:55:612[Send->]AT+CMQTTWILLTOPIC=0,31   // Set the will topic for the CONNECT message
2019-12-02 12:45:55:620[Recv<-]
>
2019-12-02 12:45:57:974[Send->]aws/things/simcom7600_device01/
2019-12-02 12:45:57:982[Recv<-]
OK

2019-12-02 12:46:00:067[Send->]AT+CMQTTWILLMSG=0,17,1   // Set the will message for the CONNECT message
2019-12-02 12:46:00:073[Recv<-]
>
2019-12-02 12:46:01:845[Send->]SIMCom Connected!
2019-12-02 12:46:01:850[Recv<-]
OK

2019-12-02 12:46:07:832[Send->]AT+CMQTTCONNECT=0,"tcp://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com:8883",60,1   // Connect to a MQTT server
2019-12-02 12:46:07:847[Recv<-]
OK

2019-12-02 12:46:09:702[Recv<-]
+CMQTTCONNECT: 0,0

2019-12-02 12:46:32:413[Send->]AT+CMQTTSUBTOPIC=0,31,1    // Set one topic for the SUBSCRIBE message
2019-12-02 12:46:32:421[Recv<-]
>
2019-12-02 12:46:34:212[Send->]aws/things/simcom7600_device02/
2019-12-02 12:46:34:220[Recv<-]
OK
   
2019-12-02 12:46:36:012[Send->]AT+CMQTTSUB=0     // Subscribe a message
2019-12-02 12:46:36:020[Recv<-]
OK

2019-12-02 12:46:36:288[Recv<-]
+CMQTTSUB: 0,0

2019-12-02 12:46:44:730[Send->]AT+CMQTTTOPIC=0,31      // Set the topic for the PUBLISH message
2019-12-02 12:46:44:739[Recv<-]
>
2019-12-02 12:46:46:059[Send->]aws/things/simcom7600_device02/
2019-12-02 12:46:46:070[Recv<-]
OK

2019-12-02 12:46:48:724[Send->]AT+CMQTTPAYLOAD=0,38   // Set the payload for the PUBLISH message
2019-12-02 12:46:48:732[Recv<-]
>
2019-12-02 12:46:50:446[Send->]{"message":"Hello from SIMCom Module"}
2019-12-02 12:46:50:454[Recv<-]
OK

2019-12-02 12:46:51:919[Send->]AT+CMQTTPUB=0,1,60        // Publish a message
2019-12-02 12:46:51:927[Recv<-]
OK

2019-12-02 12:46:52:253[Recv<-]  
+CMQTTPUB: 0,0
  
+CMQTTRXSTART: 0,31,38                          // Acknowledgement of received message from subscribed client  
+CMQTTRXTOPIC: 0,31
aws/things/simcom7600_device02/
+CMQTTRXPAYLOAD: 0,38
{"message":"Hello from SIMCom Module"}
+CMQTTRXEND: 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2015-09-11
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    相关资源
    最近更新 更多