- Newest
- Most votes
- Most comments
Hi. That repo is a bit old and does extra stuff like certificate rotation. Key links:
- https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html
- https://docs.aws.amazon.com/whitepapers/latest/device-manufacturing-provisioning/device-manufacturing-provisioning.html
- https://catalog.us-east-1.prod.workshops.aws/workshops/7c2b04e7-8051-4c71-bc8b-6d2d7ce32727/en-US/provisioning-options
I would say there are two major considerations to determine the right provisioning method:
- When should each device get a unique certificate and private key?
- When should each device be registered in the AWS account?
Very simplified high level:
- Factory + factory = single thing provisioning (or scripted by API calls)
- Factory + field = JITP / JITR
- Field + field = fleet provisioning
There is much more nuance than that, but it's a good starting point.
JITP requires each device to already have a unique certificate before it comes online. You also need to register your CA with AWS IoT Core. And create a provisioning template that defines how AWS IoT Core should register the Thing when it connects for the first time.
To decide if each device can get unique credentials in the factory, you need to consider factors like internet connectivity, PKI setup, whether the device uses HSMs or secure elements, and whether you trust the manufacturer.
Relevant content
- asked 3 years ago
- asked 3 years ago
- AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated 2 months ago

Hi Greg! Thanks for your help! I think we safely can use single thing provisioning. Our hw developer would like to generate private keys themselves and provide a CSR to AWS. From what I can see, the STP should support that, but do I have to pre-sign something on the device, or can we still utilize ONLY the RegisterThing API to get from A to Z?
I created a simple lambda to call the RegisterThing API using the nodeJs. (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iot/command/RegisterThingCommand/) I was hoping i could just refer to a pre-created provisoning template in IoT-core, but it seems that I have to create the template in the lambda itself and parse it to JSON.
Any ideas on best practices here?