Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Bibliothèque Secure Sockets
Important
Cette bibliothèque est hébergée sur le RTOS référentiel Amazon Free, qui est obsolète. Nous vous recommandons de commencer ici lorsque vous créez un nouveau projet. Si vous possédez déjà un RTOS projet gratuit basé sur le RTOS référentiel Amazon Free, désormais obsolète, consultez le. Guide de migration du référentiel RTOS Github gratuit sur Amazon
Présentation
Vous pouvez utiliser la bibliothèque Free RTOS Secure Sockets pour créer des applications intégrées qui communiquent en toute sécurité. Cette bibliothèque a été conçue pour faciliter les premiers pas des développeurs logiciels aux expériences de programmation réseau diverses.
La bibliothèque Free RTOS Secure Sockets est basée sur l'interface des sockets de Berkeley, avec une option de communication sécurisée supplémentaire par TLS protocole. Pour plus d'informations sur les différences entre la bibliothèque Free RTOS Secure Sockets et l'interface des sockets Berkeley, reportez-vous SOCKETS_SetSockOpt
à la section Secure Sockets API Reference.
Note
Actuellement, seul le clientAPIs, ainsi qu'une implémentation IP légère (LWiPBind
API côté serveur, sont pris en charge pour RTOS les Free Secure Sockets.
Dépendances et exigences
La bibliothèque Free RTOS Secure Sockets dépend d'une pile TCP /IP et d'une TLS implémentation. Ports for Free RTOS répond à ces dépendances de trois manières :
-
Une implémentation personnalisée de TCP /IP et TLS
-
Une implémentation personnalisée de TCP /IP et de la RTOS TLS couche Free avec mbed TLS
-
RTOSFree+ TCP
et la RTOS TLS couche Free avec mbed TLS
Le diagramme de dépendance ci-dessous montre l'implémentation de référence incluse dans la bibliothèque Free RTOS Secure Sockets. Cette implémentation de référence prend en charge TLS TCP /IP via Ethernet et Wi-Fi avec RTOS Free+ TCP et mbed TLS comme dépendances. Pour plus d'informations sur la RTOS TLS couche Free, consultez : acte de révision dans un pipeline se poursuivant d'une étape à l'autre dans un flux de travail..
Fonctionnalités
Les fonctionnalités de la bibliothèque Free RTOS Secure Sockets incluent :
-
Une interface standard basée sur Berkeley Sockets
-
Thread-safe APIs pour l'envoi et la réception de données
-
Easy-to-enable TLS
Résolution des problèmes
Codes d’erreur
Les codes d'erreur renvoyés par la bibliothèque Free RTOS Secure Sockets sont des valeurs négatives. Pour plus d'informations sur chaque code d'erreur, consultez la section Codes d'erreur Secure Sockets dans le manuel Secure Sockets API Reference.
Note
Si Free RTOS Secure Sockets API renvoie un code d'erreur, leMQTTbibliothèque de base, qui dépend de la bibliothèque Free RTOS Secure Sockets, renvoie le code d'erreurAWS_IOT_MQTT_SEND_ERROR
.
Developer Support
La bibliothèque Free RTOS Secure Sockets inclut deux macros d'assistance pour la gestion des adresses IP :
SOCKETS_inet_addr_quick
-
Cette macro convertit une adresse IP qui est exprimée sous la forme de quatre octets numériques distincts en adresse IP exprimée sous la forme d'un nombre 32 bits dans l'ordre des octets de réseau.
SOCKETS_inet_ntoa
-
Cette macro convertit une adresse IP exprimée sous la forme d'un nombre 32 bits dans l'ordre des octets de réseau en chaîne de décimales dans la notation décimale séparée par des points.
Restrictions liées à l'utilisation
Seuls les TCP sockets sont pris en charge par la bibliothèque Free RTOS Secure Sockets. UDPles prises ne sont pas prises en charge.
APIsLes serveurs ne sont pas pris en charge par la bibliothèque Free RTOS Secure Sockets, à l'exception d'une implémentation IP légère (LWipBind
API APIsLes clients sont pris en charge.
Initialisation
Pour utiliser la bibliothèque Free RTOS Secure Sockets, vous devez initialiser la bibliothèque et ses dépendances. Pour initialiser la bibliothèque Secure Sockets, utilisez le code suivant dans votre application :
BaseType_t xResult = pdPASS; xResult = SOCKETS_Init();
Les bibliothèques dépendantes doivent être initialisées séparément. Par exemple, si RTOS Free+ TCP est une dépendance, vous devez également l'invoquer FreeRTOS_IPInit
Référence API
Pour une API référence complète, consultez la section Secure Sockets API Reference.
Exemple d’utilisation
Le code suivant connecte un client à un serveur.
#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 ); }
Pour obtenir un exemple complet, consultez Démonstration du client Secure Sockets Echo.
Portage
Les Free RTOS Secure Sockets dépendent d'une pile TCP /IP et d'une TLS implémentation. En fonction de votre pile, pour effectuer le portage de la bibliothèque Secure Sockets, vous devez parfois inclure les éléments suivants :
Pour plus d'informations sur le portage, consultez la section Portage de la bibliothèque Secure Sockets dans le guide de RTOS portage gratuit.