Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

CoreMQTT-Demo zur gegenseitigen Authentifizierung - Kostenlos RTOS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CoreMQTT-Demo zur gegenseitigen Authentifizierung

Wichtig

Diese Demo wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie hier beginnen, wenn Sie ein neues Projekt erstellen. Wenn Sie bereits über ein bestehendes FreeRTOS-Projekt verfügen, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, lesen Sie dieLeitfaden zur Migration des kostenlosen RTOS Github-Repositorys von Amazon.

Einführung

Das Demo-Projekt zur gegenseitigen Authentifizierung von CoreMQTT zeigt Ihnen, wie Sie mithilfe von TLS eine Verbindung zu einem MQTT-Broker mit gegenseitiger Authentifizierung zwischen dem Client und dem Server herstellen. Diese Demo verwendet eine MbedTLS-basierte Transportschnittstellenimplementierung, um eine Server- und Client-authentifizierte TLS-Verbindung herzustellen, und demonstriert den Subscribe-Publishing-Workflow von MQTT auf QoS 1-Ebene. Es abonniert einen Themenfilter, veröffentlicht dann Themen, die dem Filter entsprechen, und wartet auf den Empfang dieser Nachrichten vom Server auf QoS 1-Ebene. Dieser Zyklus der Veröffentlichung beim Broker und des Empfangs derselben Nachricht vom Broker wird auf unbestimmte Zeit wiederholt. Die Nachrichten in dieser Demo werden mit QoS 1 gesendet, was mindestens eine Zustellung gemäß der MQTT-Spezifikation garantiert.

Anmerkung

Um die FreeRTOS-Demos einzurichten und auszuführen, folgen Sie den Schritten unterJetzt kostenlos durchstarten RTOS.

Quellcode

Die Demo-Quelldatei ist benanntmqtt_demo_mutual_auth.c und befindet sich imfreertos/demos/coreMQTT/ Verzeichnis und GitHubauf der Website.

Funktionalität

In der Demo wird eine einzelne Anwendungsaufgabe erstellt, die anhand einer Reihe von Beispielen veranschaulicht, wie Sie eine Verbindung zum Broker herstellen, ein Thema auf dem Broker abonnieren, zu einem Thema auf dem Broker veröffentlichen und schließlich die Verbindung zum Broker trennen. Die Demo-Anwendung abonniert und veröffentlicht dasselbe Thema. Jedes Mal, wenn die Demo eine Nachricht an den MQTT-Broker veröffentlicht, sendet der Broker dieselbe Nachricht an die Demo-Anwendung zurück.

Wird der Befehl erfolgreich ausgeführt, wird Ihnen eine Ausgabe ähnlich der folgenden angezeigt:

Ausgabe des MQTT-Demo-Terminals bei erfolgreichem Abschluss

DieAWS IoT Konsole wird Ihnen eine Ausgabe ähnlich der folgenden angezeigt:

Ausgabe der MQTT-Demo-Konsole bei erfolgreichem Abschluss

Wiederholungslogik mit exponentiellem Backoff und Jitter

Die prvBackoffForWiederholungsfunktion zeigt, wie fehlgeschlagene Netzwerkoperationen mit dem Server, z. B. TLS-Verbindungen oder MQTT-Abonnementanfragen, mit exponentiellem Backoff und Jitter erneut versucht werden können. Die Funktion berechnet die Backoff-Periode für den nächsten Wiederholungsversuch und führt die Verzögerung durch, wenn die Wiederholungsversuche nicht ausgeschöpft sind. Da die Berechnung der Backoff-Periode die Generierung einer Zufallszahl erfordert, verwendet die Funktion das PKCS11-Modul, um die Zufallszahl zu generieren. Die Verwendung des PKCS11-Moduls ermöglicht den Zugriff auf einen True Random Number Generator (TRNG), sofern die Herstellerplattform dies unterstützt. Wir empfehlen, dass Sie den Zufallszahlengenerator mit einer gerätespezifischen Entropiequelle ausstatten, um die Wahrscheinlichkeit von Kollisionen durch Geräte bei erneuten Verbindungsversuchen zu verringern.

Verbindung zum MQTT-Broker herstellen

Die prvConnectToServerWithBackoffRetriesFunktion versucht, eine gegenseitig authentifizierte TLS-Verbindung zum MQTT-Broker herzustellen. Wenn die Verbindung fehlschlägt, wird es nach einer Backoff-Phase erneut versucht. Die Backoff-Periode nimmt exponentiell zu, bis die maximale Anzahl von Versuchen oder die maximale Backoff-Periode erreicht ist. DieBackoffAlgorithm_GetNextBackoff Funktion stellt einen exponentiell ansteigenden Backoff-Wert bereit und kehrt zurück,RetryUtilsRetriesExhausted wenn die maximale Anzahl von Versuchen erreicht wurde. DieprvConnectToServerWithBackoffRetries Funktion gibt einen Fehlerstatus zurück, wenn die TLS-Verbindung zum Broker nach der konfigurierten Anzahl von Versuchen nicht hergestellt werden kann.

DieConnectionWithBroker Funktion prvCreateMQTT demonstriert, wie eine MQTT-Verbindung zu einem MQTT-Broker mit einer sauberen Sitzung hergestellt wird. Es verwendet die TLS-Transportschnittstelle, die in derFreeRTOS-Plus/Source/Application-Protocols/platform/freertos/transport/src/tls_freertos.c Datei implementiert ist. Denken Sie daran, dass wir die Keep-Alive-Sekunden für den Broker festlegenxConnectInfo.

Die nächste Funktion zeigt, wie die TLS-Transportschnittstelle und die Zeitfunktion in einem MQTT-Kontext mithilfe derMQTT_Init Funktion festgelegt werden. Es zeigt auch, wie eine Event-Callback-Funktion pointer (prvEventCallback) gesetzt wird. Dieser Callback wird für die Meldung eingehender Nachrichten verwendet.

Abonnieren eines MQTT-Themas

DieSubscribeWithBackoffRetries Funktion prvMQTT demonstriert, wie Sie einen Themenfilter auf dem MQTT-Broker abonnieren. Das Beispiel zeigt, wie Sie einen Themenfilter abonnieren, aber es ist möglich, eine Liste von Themenfiltern in demselben Abonnement-API-Aufruf zu übergeben, um mehr als einen Themenfilter zu abonnieren. Falls der MQTT-Broker die Abonnementanfrage ablehnt, versucht das Abonnement außerdem erneut, mit exponentiellem Backoff, fürRETRY_MAX_ATTEMPTS.

So veröffentlichen Sie in einem Thema

DiePublishToTopic Funktion prvMQTT demonstriert, wie Sie zu einem Thema auf dem MQTT-Broker veröffentlichen.

Empfangen eingehender Nachrichten

Die Anwendung registriert eine Event-Callback-Funktion, bevor sie eine Verbindung zum Broker herstellt, wie zuvor beschrieben. DieprvMQTTDemoTask Funktion ruft dieMQTT_ProcessLoop Funktion auf, um eingehende Nachrichten zu empfangen. Wenn eine eingehende MQTT-Nachricht empfangen wird, wird die von der Anwendung registrierte Event-Callback-Funktion aufgerufen. Die prvEventCallbackFunktion ist ein Beispiel für eine solche Event-Callback-Funktion. prvEventCallbackuntersucht den Typ des eingehenden Pakets und ruft den entsprechenden Handler auf. Im folgenden Beispiel ruft die Funktion entweder die BehandlungprvMQTTProcessIncomingPublish() eingehender Veröffentlichungsnachrichten oderprvMQTTProcessResponse() die Verarbeitung von Bestätigungen (ACK) auf.

Verarbeitung eingehender MQTT-Publish-Pakete

DieProcessIncomingPublish Funktion prvMQTT demonstriert, wie ein vom MQTT-Broker veröffentlichtes Paket verarbeitet wird.

Abmeldung von einem Thema

Der letzte Schritt im Workflow besteht darin, sich vom Thema abzumelden, sodass der Broker keine veröffentlichten Nachrichten von sendetmqttexampleTOPIC. Hier ist die Definition der Funktion prvMQTTUnsubscribeFromTopic.

Änderung der in der Demo verwendeten Root-CA

Standardmäßig verwenden die FreeRTOS-Demos das Amazon Root CA 1-Zertifikat (RSA 2048-Bit-Schlüssel), um sich beimAWS IoT Core Server zu authentifizieren. Es ist möglich, andere CA-Zertifikate für die Serverauthentifizierung zu verwenden, einschließlich des Amazon Root CA 3-Zertifikats (ECC-256-Bit-Schlüssel). Um die Root-CA für die Demo zur gegenseitigen CoreMQTT-Authentifizierung zu ändern:

  1. Öffnen Sie die Datei freertos/vendors/vendor/boards/board/aws_demos/config_files/mqtt_demo_mutual_auth_config.h in einem Texteditor.

  2. Suchen Sie in der Datei wird die folgende Zeile ausfindig.

    * #define democonfigROOT_CA_PEM "...insert here..."

    Entkommentieren Sie diese Zeile und verschieben Sie sie gegebenenfalls über das Ende des Kommentarblocks hinaus */.

  3. Kopieren Sie das CA-Zertifikat, das Sie verwenden möchten, und fügen Sie es dann in den"...insert here..." Text ein. Das Ergebnis sollte wie folgt aussehen:

    #define democonfigROOT_CA_PEM "-----BEGIN CERTIFICATE-----\n"\ "MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\n"\ "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n"\ "Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n"\ "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n"\ "Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\n"\ "ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\n"\ "QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\n"\ "ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\n"\ "BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\n"\ "YyRIHN8wfdVoOw==\n"\ "-----END CERTIFICATE-----\n"
  4. (Optional) Sie können die Stammzertifizierungsstelle für andere Demos ändern. Wiederholen Sie die Schritte 1 bis 3 für jedefreertos/vendors/vendor/boards/board/aws_demos/config_files/demo-name_config.h Datei.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.