HTTPS - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

HTTPS

I client possono pubblicare messaggi effettuando richieste agli utenti REST API utilizzando i protocolli HTTP 1.0 o 1.1. Per l'autenticazione e le mappature delle porte utilizzate dalle HTTP richieste, vedere. Protocolli, mappature delle porte e autenticazione

Nota

HTTPSnon supporta un clientId valore come MQTT fa. clientIdè disponibile durante l'utilizzoMQTT, ma non è disponibile durante l'utilizzoHTTPS.

HTTPSmessaggio URL

I dispositivi e i client pubblicano i propri messaggi POST inviando richieste a un endpoint specifico del client e a un argomento specifico: URL

https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
  • IoT_data_endpoint è l'endpoint dei dati del dispositivo.AWS IoT È possibile trovare l'endpoint nella AWS IoT console nella pagina dei dettagli dell'oggetto o sul client utilizzando il AWS CLI comando:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    L'endpoint dovrebbe assomigliare a questo: a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com

  • url_encoded_topic_name è il nome completo dell'argomento del messaggio inviato.

HTTPSesempi di codice di messaggio

Questi sono alcuni esempi di come inviare un HTTPS messaggio a AWS IoT.

Python (port 8443)
import requests import argparse # define command-line parameters parser = argparse.ArgumentParser(description="Send messages through an HTTPS connection.") parser.add_argument('--endpoint', required=True, help="Your AWS IoT data custom endpoint, not including a port. " + "Ex: \"abcdEXAMPLExyz-ats.iot.us-east-1.amazonaws.com\"") parser.add_argument('--cert', required=True, help="File path to your client certificate, in PEM format.") parser.add_argument('--key', required=True, help="File path to your private key, in PEM format.") parser.add_argument('--topic', required=True, default="test/topic", help="Topic to publish messages to.") parser.add_argument('--message', default="Hello World!", help="Message to publish. " + "Specify empty string to publish nothing.") # parse and load command-line parameter values args = parser.parse_args() # create and format values for HTTPS request publish_url = 'https://' + args.endpoint + ':8443/topics/' + args.topic + '?qos=1' publish_msg = args.message.encode('utf-8') # make request publish = requests.request('POST', publish_url, data=publish_msg, cert=[args.cert, args.key]) # print results print("Response status: ", str(publish.status_code)) if publish.status_code == 200: print("Response body:", publish.text)
Python (port 443)
import requests import http.client import json import ssl ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_CLIENT) ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2 # note the use of ALPN ssl_context.set_alpn_protocols(["x-amzn-http-ca"]) ssl_context.load_verify_locations(cafile="./<root_certificate>") # update the certificate and the AWS endpoint ssl_context.load_cert_chain("./<certificate_in_PEM_Format>", "<private_key_in_PEM_format>") connection = http.client.HTTPSConnection('<the ats IoT endpoint>', 443, context=ssl_context) message = {'data': 'Hello, I'm using TLS Client authentication!'} json_data = json.dumps(message) connection.request('POST', '/topics/device%2Fmessage?qos=1', json_data) # make request response = connection.getresponse() # print results print(response.read().decode())
CURL

Per utilizzare curl per inviare un messaggio da un client o da un dispositivo a AWS IoT.

Usare curl per inviare un messaggio da un dispositivo AWS IoT client
  1. Controlla la versione curl.

    1. Sul client, eseguire questo comando al prompt dei comandi.

      curl --help

      Nel testo di aiuto, cerca le TLS opzioni. Viene visualizzata l'opzione --tlsv1.2.

    2. Se viene visualizzata l'opzione --tlsv1.2, continuare.

    3. Se non visualizzi l'opzione --tlsv1.2 o ricevi un errore command not found, aggiorna o installa curl sul client o installa openssl prima di continuare.

  2. Installare i certificati sul client.

    Copia i file di certificato che hai creato quando hai registrato il tuo client (cosa) nella AWS IoT console. Assicurarsi di disporre di questi tre file di certificato sul client prima di continuare.

    • Il file del certificato CA (Amazon-root-CA-1.pem in questo esempio).

    • Il file di certificato del client (device.pem.crt in questo esempio).

    • Il file di chiave privata del client (private.pem.key in questo esempio).

  3. Crea la riga di comando curl, sostituendo i valori sostituibili per quelli dell'account e del sistema.

    curl --tlsv1.2 \ --cacert Amazon-root-CA-1.pem \ --cert device.pem.crt \ --key private.pem.key \ --request POST \ --data "{ \"message\": \"Hello, world\" }" \ "https://IoT_data_endpoint:8443/topics/topic?qos=1"
    --tlsv1.2

    Usa TLS 1.2 (SSL).

    --cacert Amazon-root-CA-1.pem

    Il nome del file e il percorso, se necessario, del certificato CA per verificare il peer.

    --certificato device.pem.crt

    Il nome e il percorso del file del certificato del client, se necessario.

    --chiave private.pem.key

    Il nome e il percorso del file della chiave privata del client, se necessario.

    --richiesta POST

    Il tipo di HTTP richiesta (in questo caso,POST).

    --data»{ \"message\": \"Hello, world\" }"

    I HTTP POST dati che desideri pubblicare. In questo caso, si tratta di una JSON stringa, le cui virgolette interne sono separate dal carattere barra rovesciata (\).

    «https://IoT_data_endpoint:8443/argomenti/topic? qos=1"

    L'URLendpoint dei dati del AWS IoT dispositivo del client, seguito dalla HTTPS porta:8443, seguita dalla parola chiave /topics/ e dal nome dell'argomento, in questo caso. topic Specifica la qualità del servizio come parametro di query, ?qos=1.

  4. Apri il client MQTT di test nella AWS IoT console.

    Segui le istruzioni Visualizza i messaggi MQTT con il AWS IoT client MQTT e configura la console per sottoscrivere i messaggi con il nome dell'argomento di topic usato nel tuo curl comando oppure usa il filtro degli argomenti con caratteri jolly di#.

  5. Testare il comando.

    Durante il monitoraggio dell'argomento nel client di test della console AWS IoT , andare al client ed emettere la riga di comando curl creata nel passaggio 3. Nella console vengono visualizzati i messaggi del client.