如何以编程方式检索 AWS IoT Core 中事物的公钥?

物联网 aws-iot aws
2021-06-03 09:24:21

我正在构建一个系统,我想在其中从 AWS Lambda(通过 AWS IoT Core 规则)向设备发送加密消息。理想情况下,我想使用设备的公钥(存储在 AWS IoT Core 中)加密此消息;但是,我找不到任何关于如何使用 AWS SDk(对于任何语言)检索用于对设备进行身份验证的证书的文档,也找不到它的公钥。我很好奇是否有人能够实现类似的目标。

在 re:Invent 2016 上展示 iRobot 的解决方案后,我正在对我的解决方案进行部分建模:(视频)。我认为以某种方式是可能的,否则我不确定演示者是如何做到这一点的。

也有可能在最近的 AWS IoT Core 迭代中存在更好的方法,因此我愿意接受有关解决此问题的不同方法的建议。

1个回答

事实证明,解决这个问题的方法是首先使用ListThingPrincipalsAPI功能获取一个事物(可能包括也可能不包括证书)的所有主体的列表,该功能通过 ARN 返回主体数组。如果您只需要证书,您可以查找 ARN 的资源 ID 为 的主体cert/*然后,您可以使用DescribeCertificate端点来检索有关证书的信息,包括certificatePem可用于派生事物的公钥的信息。

获取显式用于连接到 AWS IoT 的证书 ID 的另一种方法是使用principal规则中函数,函数(如果使用证书进行连接)将包含证书 ID,然后可以将其DescribeCertificate提供给以获取公证书。