Secure-Sockets-Bibliothek - 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.

Secure-Sockets-Bibliothek

Wichtig

Diese Bibliothek wird im RTOS Amazon-Free-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie hier beginnen, wenn Sie ein neues Projekt erstellen. Wenn Sie bereits über ein bestehendes kostenloses RTOS Projekt verfügen, das auf dem inzwischen veralteten RTOS Amazon-Free-Repository basiert, finden Sie weitere Informationen unter. Leitfaden zur Migration des kostenlosen RTOS Github-Repositorys von Amazon

Übersicht

Sie können die Free RTOS Secure Sockets-Bibliothek verwenden, um eingebettete Anwendungen zu erstellen, die sicher kommunizieren. Die Bibliothek dient dem einfachen Einstieg von Softwareentwicklern mit unterschiedlichem Hintergrund im Bereich Netzwerkprogrammierung.

Die Free RTOS Secure Sockets-Bibliothek basiert auf der Berkeley-Sockets-Schnittstelle und bietet eine zusätzliche sichere Kommunikationsoption per TLS Protokoll. Informationen zu den Unterschieden zwischen der Free RTOS Secure Sockets-Bibliothek und der Berkeley-Sockets-Schnittstelle finden Sie SOCKETS_SetSockOpt in der Secure API Sockets-Referenz.

Anmerkung

Derzeit werden nur Clients APIs und eine BindAPIserverseitige Lightweight IP (LwIP) -Implementierung für Free RTOS Secure Sockets unterstützt.

Abhängigkeiten und Anforderungen

Die Free RTOS Secure Sockets-Bibliothek hängt von einem TCP /IP-Stack und einer Implementierung ab. TLS Ports for Free RTOS erfüllt diese Abhängigkeiten auf eine von drei Arten:

Das folgende Abhängigkeitsdiagramm zeigt die Referenzimplementierung, die in der Free RTOS Secure Sockets-Bibliothek enthalten ist. Diese Referenzimplementierung unterstützt TLS TCP /IP über Ethernet und Wi-Fi mit RTOS Free+ TCP und mbed TLS als Abhängigkeiten. Weitere Informationen zur RTOS TLS Ebene Free finden Sie unter. Transport Layer Security

Secure Sockets Library-Architektur mit RTOS Free+TCP, TLS Layer und TLS Komponenten.

Features

Zu den Funktionen der kostenlosen RTOS Secure Sockets-Bibliothek gehören:

  • Eine Standard-, Berkeley-Sockets-basierte Schnittstelle

  • Thread-sicher APIs für das Senden und Empfangen von Daten

  • Easy-to-enable TLS

Fehlerbehebung

Fehlercodes

Die Fehlercodes, die die Free RTOS Secure Sockets-Bibliothek zurückgibt, sind negative Werte. Weitere Informationen zu den einzelnen Fehlercodes finden Sie unter Secure Sockets-Fehlercodes in der Secure API Sockets-Referenz.

Anmerkung

Wenn Free RTOS Secure Sockets einen Fehlercode API zurückgibt, gibt derMQTTKernbibliothek, der von der Free RTOS Secure Sockets-Bibliothek abhängt, den Fehlercode zurückAWS_IOT_MQTT_SEND_ERROR.

Developer Support

Die Free RTOS Secure Sockets-Bibliothek enthält zwei Hilfsmakros für den Umgang mit IP-Adressen:

SOCKETS_inet_addr_quick

Dieses Makro wandelt eine IP-Adresse, die als vier separate numerische Oktette ausgedrückt wird, in eine IP-Adresse um, die als 32-Bit-Zahl in Netzwerk-Byte-Reihenfolge ausgedrückt wird.

SOCKETS_inet_ntoa

Dieses Makro wandelt eine IP-Adresse, die als 32-Bit-Zahl in Netzwerk-Byte-Reihenfolge ausgedrückt wird, in eine Zeichenkette in Dezimalpunkt-Notation um.

Nutzungsbeschränkungen

Nur TCP Sockets werden von der Free RTOS Secure Sockets-Bibliothek unterstützt. UDPSockets werden nicht unterstützt.

Server APIs werden von der Free RTOS Secure Sockets-Bibliothek nicht unterstützt, mit Ausnahme einer Lightweight IP (lwIP) -Implementierung auf der Serverseite. Bind API Clients APIs werden unterstützt.

Initialisierung

Um die Free RTOS Secure Sockets-Bibliothek verwenden zu können, müssen Sie die Bibliothek und ihre Abhängigkeiten initialisieren. Um die Secure-Sockets-Bibliothek zu initialisieren, verwenden Sie den folgenden Code in Ihrer Anwendung:

BaseType_t xResult = pdPASS; xResult = SOCKETS_Init();

Abhängige Bibliotheken müssen separat initialisiert werden. Wenn Free RTOS + beispielsweise eine Abhängigkeit TCP ist, müssen Sie sie auch FreeRTOS_IPInitin Ihrer Anwendung aufrufen.

API-Referenz

Eine vollständige API Referenz finden Sie unter Secure Sockets API Reference.

Beispielverwendung

Der folgende Code verbindet einen Client mit einem Server.

#include "aws_secure_sockets.h" #define configSERVER_ADDR0 127 #define configSERVER_ADDR1 0 #define configSERVER_ADDR2 0 #define configSERVER_ADDR3 1 #define configCLIENT_PORT 443 /* Rx and Tx timeouts are used to ensure the sockets do not wait too long for * missing data. */ static const TickType_t xReceiveTimeOut = pdMS_TO_TICKS( 2000 ); static const TickType_t xSendTimeOut = pdMS_TO_TICKS( 2000 ); /* PEM-encoded server certificate */ /* The certificate used below is one of the Amazon Root CAs.\ Change this to the certificate of your choice. */ static const char cTlsECHO_SERVER_CERTIFICATE_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"; static const uint32_t ulTlsECHO_SERVER_CERTIFICATE_LENGTH = sizeof( cTlsECHO_SERVER_CERTIFICATE_PEM ); void vConnectToServerWithSecureSocket( void ) { Socket_t xSocket; SocketsSockaddr_t xEchoServerAddress; BaseType_t xTransmitted, lStringLength; xEchoServerAddress.usPort = SOCKETS_htons( configCLIENT_PORT ); xEchoServerAddress.ulAddress = SOCKETS_inet_addr_quick( configSERVER_ADDR0, configSERVER_ADDR1, configSERVER_ADDR2, configSERVER_ADDR3 ); /* Create a TCP socket. */ xSocket = SOCKETS_Socket( SOCKETS_AF_INET, SOCKETS_SOCK_STREAM, SOCKETS_IPPROTO_TCP ); configASSERT( xSocket != SOCKETS_INVALID_SOCKET ); /* Set a timeout so a missing reply does not cause the task to block indefinitely. */ SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_RCVTIMEO, &xReceiveTimeOut, sizeof( xReceiveTimeOut ) ); SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_SNDTIMEO, &xSendTimeOut, sizeof( xSendTimeOut ) ); /* Set the socket to use TLS. */ SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_REQUIRE_TLS, NULL, ( size_t ) 0 ); SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_TRUSTED_SERVER_CERTIFICATE, cTlsECHO_SERVER_CERTIFICATE_PEM, ulTlsECHO_SERVER_CERTIFICATE_LENGTH ); if( SOCKETS_Connect( xSocket, &xEchoServerAddress, sizeof( xEchoServerAddress ) ) == 0 ) { /* Send the string to the socket. */ xTransmitted = SOCKETS_Send( xSocket, /* The socket receiving. */ ( void * )"some message", /* The data being sent. */ 12, /* The length of the data being sent. */ 0 ); /* No flags. */ if( xTransmitted < 0 ) { /* Error while sending data */ return; } SOCKETS_Shutdown( xSocket, SOCKETS_SHUT_RDWR ); } else { //failed to connect to server } SOCKETS_Close( xSocket ); }

Ein vollständiges Beispiel finden Sie unter Secure Sockets Echo-Client-Demo.

Portierung

Free RTOS Secure Sockets hängt von einem TCP /IP-Stack und einer TLS Implementierung ab. Abhängig von Ihrem Stack müssen Sie für die Portierung der Secure-Sockets-Bibliothek möglicherweise einige der folgenden Portierungen vornehmen:

Weitere Informationen zur Portierung finden Sie unter Portierung der Secure Sockets Library im Free RTOS Porting Guide.