Forum: Mikrocontroller und Digitale Elektronik ESP32 und MQTT mit SSL/TLS, Passwort und Client-Zertifikat


von Pat (elpat)


Lesenswert?

Hallo!

Ich versuche ein Lilygo-T-SIM7000G Entwicklungsboard mit einem 
MQTT-Server (Port 8883 per SSL/TLS, Authentifizierung mit 
username/password, client-certificate benötigt) per GSM zu verbinden.

(Hier der Link zum Board:
https://www.amazon.de/dp/B099RQ7BSR?ref=nb_sb_ss_w_as-reorder-t1_k0_1_6&amp=&crid=1SCEQBF2W1Q7A&amp=&sprefix=lilygo
)

Ich benutze zum Programmieren Visual Studio Code mit PlatformIO mit 
Arduino-Framework.

Habe auch schon diese recht aktuell anmutende Bibliothek gefunden: 
SSLClient
https://github.com/govorox/SSLClient

Es gibt auch ein Beispielcode für genau meinen Anwendungsfall und genau 
mein Board:
https://github.com/govorox/SSLClient/tree/master/examples/Esp32/mqtt_secure_gsm_SIM7000

Habe dieses Beispiel genommen, die entsprechenden Variablen angepasst 
(SIM-PIN, apn, user, password, Zertifikate, etc.) und auf den ESP32 des 
Lilygo-Boards aufgeflasht.

Am seriellen Monitor konnte ich beobachten, dass das Board sich mit dem 
Mobilfunknetz (auch Internet, es zeigt die IP-Adresse an) verbindet und 
dann jedoch folgende Fehlermeldung kommt:
1
Attempting MQTT connection...[ 18962][E][ssl_client.cpp:41] _handle_error(): [start_ssl_client():347]: (-29696) SSL - No RNG was provided to the SSL module
2
[ 18963][E][SSLClient.cpp:133] connect(): start_ssl_client: -29696
3
4
assert failed: heap_caps_free heap_caps.c:360 (heap != NULL && "free() target pointer is outside heap areas")
5
6
Backtrace: <anonymized>
7
8
ELF file SHA256: <anonymized>
9
10
Rebooting...

Ich habe bereits gegoogelt, dass RNG Random Number Generator bedeutet. 
Ich weiß auch, dass man das braucht, um sichere Schlüssel generieren zu 
können und dass man dafür einen nicht angeschlossenen analogen Pin 
nehmen kann. Aber ich weiß nicht, wie ich den Code anpassen sollte, um 
dies zu erreichen.

Ich habe auch diese ältere Bibliothek gefunden, der noch die Möglichkeit 
bietet, so einen Analog-Pin festzulegen:
https://github.com/OPEnSLab-OSU/SSLClient

Die selbe Funktion in der aktuelleren Bibliothek hat diese Funktion 
nicht mehr.

Die ältere Bibliothek wurde aber seit 3 Jahren nicht mehr angegriffen 
und es steht auch "failing" bei der Anzeige, die normalerweise grün sein 
sollte (In der obersten Zeile von Readme.md).

Kennt sich jemand mit diesem Problem aus?
Habt ihr Erfahrung mit diesem Problem?
Könnt ihr vielleicht eine Lösung für dieses Problem empfehlen? Oder eine 
andere Bibliothek?

Danke im Voraus!

Gruß,
elpat

von Joh S. (joh93)


Lesenswert?

Dumme Frage: Kommt der RNG Fehler nicht daher, da dass Assert fehl 
schlägt?
assert failed: heap_caps_free heap_caps.c:360 (heap != NULL && "free() 
target pointer is outside heap areas")

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.