赞
踩
aws-iot-devices-sdk 是亚马逊针对物联网推出的一套解决方案,这里主要记录如何初步跑起来。
官方文档写的已经足够详细了,一定要看官网最新的英文版,看文档过程中,发现中文版已经落后很久了。
可以对比下AWS IoT SDK Tutorials,英文和中文描述就相差很大。 这里以英文版为主。
这里主要登录AWS IoT添加一个设备,官方英文文档中的Connecting Your Raspberry Pi to AWS IoT写的已经很详细了,这里就不再复述,注册完成之后的界面:
注册过程中需要下载公钥和密钥
rootCA需要单独复制出来保存为rootCA.crt,选择图中高亮的CA即可
下载源代码
git clone https://github.com/aws/aws-iot-device-sdk-embedded-C.git -b release
编译源代码之前,需要安装CppUTest和Mbedtls第三方库,只需要把官方的源码复制到aws-iot-device-sdk-embedded-C/external_libs/ 对应的额目录即可
mbedtls 解压源码复制到aws-iot-device-sdk-embedded-C/external_libs/mbedTLS
https://tls.mbed.org/download/start/mbedtls-2.11.0-apache.tgz
cpputest 解压源码复制到aws-iot-device-sdk-embedded-C/external_libs/CppUTest
https://github.com/cpputest/cpputest/releases/tag/v3.6
拷贝aws iot 后台创建设备时生成的证书到 aws-iot-device-sdk-embedded-C/certs
//证书如下
certs git:(release) ✗ >ls
47e9f5f0d6-certificate.pem.crt 47e9f5f0d6-private.pem.key 47e9f5f0d6-public.pem.key README.txt rootCA.crt
这里以samples/linux/subscribe_publish_sample为例,编译之前,需要修aws_iot_config.h的配置,主要修改如下字段
// =================================================
#define AWS_IOT_MQTT_HOST "a317ak53zstmeq-ats.iot.us-east-1.amazonaws.com" ///< Customer specific MQTT HOST. The same will be used for Thing Shadow
#define AWS_IOT_MQTT_PORT 443 ///< default port for MQTT/S
#define AWS_IOT_MQTT_CLIENT_ID "c-sdk-client-id" ///< MQTT client ID should be unique for every device
#define AWS_IOT_MY_THING_NAME "MyRaspberryPI" ///< Thing Name of the Shadow this device is associated with
#define AWS_IOT_ROOT_CA_FILENAME "rootCA.crt" ///< Root CA file name
#define AWS_IOT_CERTIFICATE_FILENAME "47e9f5f0d6-certificate.pem.crt" ///< device signed certificate file name
#define AWS_IOT_PRIVATE_KEY_FILENAME "47e9f5f0d6-private.pem.key" ///< Device private key filename
完成之后,编译成功运行如下:
➜ subscribe_publish_sample git:(release) ✗ >./subscribe_publish_sample AWS IoT SDK Version 3.0.1- DEBUG: main L#159 rootCA /home/zhaomm/Code/code/aws-iot-device-sdk-embedded-C/samples/linux/subscribe_publish_sample/../../../certs/rootCA.crt DEBUG: main L#160 clientCRT /home/zhaomm/Code/code/aws-iot-device-sdk-embedded-C/samples/linux/subscribe_publish_sample/../../../certs/47e9f5f0d6-certificate.pem.crt DEBUG: main L#161 clientKey /home/zhaomm/Code/code/aws-iot-device-sdk-embedded-C/samples/linux/subscribe_publish_sample/../../../certs/47e9f5f0d6-private.pem.key Connecting... DEBUG: iot_tls_connect L#130 . Seeding the random number generator... DEBUG: iot_tls_connect L#138 . Loading the CA root certificate ... DEBUG: iot_tls_connect L#144 ok (0 skipped) DEBUG: iot_tls_connect L#146 . Loading the client cert. and key... DEBUG: iot_tls_connect L#159 ok DEBUG: iot_tls_connect L#161 . Connecting to a317ak53zstmeq-ats.iot.us-east-1.amazonaws.com/8883... DEBUG: iot_tls_connect L#180 ok DEBUG: iot_tls_connect L#182 . Setting up the SSL/TLS structure... DEBUG: iot_tls_connect L#223 SSL state connect : 0 DEBUG: iot_tls_connect L#226 ok DEBUG: iot_tls_connect L#228 SSL state connect : 0 DEBUG: iot_tls_connect L#229 . Performing the SSL/TLS handshake... DEBUG: _iot_tls_verify_cert L#49 Verify requested for (Depth 2): DEBUG: _iot_tls_verify_cert L#51 cert. version : 3 serial number : 06:6C:9F:CF:99:BF:8C:0A:39:E2:F0:78:8A:43:E6:96:36:5B:CA issuer name : C=US, O=Amazon, CN=Amazon Root CA 1 subject name : C=US, O=Amazon, CN=Amazon Root CA 1 issued on : 2015-05-26 00:00:00 expires on : 2038-01-17 00:00:00 signed using : RSA with SHA-256 RSA key size : 2048 bits basic constraints : CA=true key usage : Digital Signature, Key Cert Sign, CRL Sign DEBUG: _iot_tls_verify_cert L#54 This certificate has no flags DEBUG: _iot_tls_verify_cert L#49 Verify requested for (Depth 1): DEBUG: _iot_tls_verify_cert L#51 cert. version : 3 serial number : 06:7F:94:57:85:87:E8:AC:77:DE:B2:53:32:5B:BC:99:8B:56:0D issuer name : C=US, O=Amazon, CN=Amazon Root CA 1 subject name : C=US, O=Amazon, OU=Server CA 1B, CN=Amazon issued on : 2015-10-22 00:00:00 expires on : 2025-10-19 00:00:00 signed using : RSA with SHA-256 RSA key size : 2048 bits basic constraints : CA=true, max_pathlen=0 key usage : Digital Signature, Key Cert Sign, CRL Sign DEBUG: _iot_tls_verify_cert L#54 This certificate has no flags DEBUG: _iot_tls_verify_cert L#49 Verify requested for (Depth 0): DEBUG: _iot_tls_verify_cert L#51 cert. version : 3 serial number : 06:66:B4:8C:67:DF:2F:E7:A9:A2:26:55:3E:71:EE:24 issuer name : C=US, O=Amazon, OU=Server CA 1B, CN=Amazon subject name : CN=*.iot.us-east-1.amazonaws.com issued on : 2018-08-02 00:00:00 expires on : 2019-08-02 12:00:00 signed using : RSA with SHA-256 RSA key size : 2048 bits basic constraints : CA=false subject alt name : iot.us-east-1.amazonaws.com, *.iot.us-east-1.amazonaws.com key usage : Digital Signature, Key Encipherment ext key usage : TLS Web Server Authentication, TLS Web Client Authentication DEBUG: _iot_tls_verify_cert L#54 This certificate has no flags DEBUG: iot_tls_connect L#246 ok [ Protocol is TLSv1.2 ] [ Ciphersuite is TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 ] DEBUG: iot_tls_connect L#248 [ Record expansion is 29 ] DEBUG: iot_tls_connect L#253 . Verifying peer X.509 certificate... DEBUG: iot_tls_connect L#262 ok DEBUG: iot_tls_connect L#272 . Peer certificate information ... DEBUG: iot_tls_connect L#274 cert. version : 3 serial number : 06:66:B4:8C:67:DF:2F:E7:A9:A2:26:55:3E:71:EE:24 issuer name : C=US, O=Amazon, OU=Server CA 1B, CN=Amazon subject name : CN=*.iot.us-east-1.amazonaws.com issued on : 2018-08-02 00:00:00 expires on : 2019-08-02 12:00:00 signed using : RSA with SHA-256 RSA key size : 2048 bits basic constraints : CA=false subject alt name : iot.us-east-1.amazonaws.com, *.iot.us-east-1.amazonaws.com key usage : Digital Signature, Key Encipherment ext key usage : TLS Web Server Authentication, TLS Web Client Authentication Subscribing... -->sleep Subscribe callback sdkTest/sub hello from SDK QOS0 : 0 Subscribe callback sdkTest/sub hello from SDK QOS1 : 1 -->sleep
进入亚马逊IOT云端提供的测试页面
双方订阅一样的消息
客户端和云端实际通讯的界面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。