Secure IOT with AWS and Hornbill ESP32
Security of connected devices is of paramount concern. There are several possible ways to make the devices secure. One of the most essential and widely used options is to use end to end encryption. The widely used Transport Layer Security (TLS) version 1.2 is the latest standard used on web for secure connections including banking. There are very few micro-controller based solutions that implement TLS 1.2 due to lack of resources. ESP32 is one of the most affordable options out there. So let’s look at securely connecting Hornbill ESP32 Dev board to Amazon web services (AWS) IOT.
We will start with configuring AWS account, setting up the thing, generating the security certificates, testing with a MQTT desktop client and then communicating with the hardware.
Contents
AWS User Account
For using the AWS services you need to have a user account and login using the AWS Login link
Existing users can directly login and directly jump to next. New users should register first and link the credit card for payments. Basic plan is free for first Year, other plans are chargeable. Check this link for available plans.
Creating a new thing
After Login, click on Signin To Console to go to AWS dash board.
Now type AWS IOT and Select the AWS IOT (Connect Devices to Cloud) from drop down as shown below.
Now the AWS GetStarted Window will open only for the first time. Click on GetStarted to go to dash board.
Click on Register-->Things for registering a new Thing as shown below.
Click on Create to create a new Thing.
Provide a unique Thing name and click on Create to proceed.
myTestThing is SuccessFul created as shown below.
Get the MQTT HOST name and thing name from Interact menu. These will be used to connect with AWS MQTT and also to subscribe/publish the topics.
Generate certificates for new thing
Go to Security menu and click on Create Certificate to register the certificates.
Click on the activate button to activate the certificates and download the certificate,private key and root CA as name them as below.
aws-root-ca.pem
certificate.pem.crt
private.pem.key
Define and Attach Policies
Go do AWS dash board and select the Security-->Policies and click on Create a Policy as shown below.
Define the policy for myTestThing as shown below
Now go back to Certificates and attach the policy that was defined above
Select the thing and attach the policies define above.
Verify the Attached Policies
Now verify whether the policies are attached to newly created thing as shown below.
Testing Using MQTT Fx tool
As we have a test thing and also the certificates assigned with required policies. We can test it using the MQTT Fx broker tool. Lets list all the info we had while creating the thing and it certificates.
Broker Address / HOST Name: a3jzsmkecjw9hn.iot.us-west-2.amazonaws.com
Broker Port : 8883
Certificates:
aws-root-ca.pem
certificate.pem.crt
private.pem.key
After doing the above setting, connect to the AWS.
Subscribe to the thing that we created in the above tutorial.
Successfully subscribed to the myTestThing.
Now select the myTestThing topic and publish a message.
The published message is successfully received.
Have an opinion, suggestion , question or feedback about the article let it out here!