使用Java为AWS IoT创建自签名证书
我有一个根CA证书及其私钥(CAcert.pem和CApvtkey.key)。
已在AWS IoT核心上注册根CA证书。这将用于自签名和验证其他证书以进行身份验证。
我正在尝试使用Java创建由我的根CA证书签名的证书,但运气不是很好。
AWS IoT Java SDK提供生成证书以及在AWS上注册/激活证书的功能,但我不知道如何使用我的根CA证书签名和激活它们。
我只有这个:
//Previous code sets up thing name etc...
CreateThingResult resp1 = client.createThing(thingRequest);
CreateKeysAndCertificateRequest req = new CreateKeysAndCertificateRequest();
req.setSetAsActive(true);
CreateKeysAndCertificateResult resp2 = client.createKeysAndCertificate(req);
client.attachThingPrincipal(new AttachThingPrincipalRequest().
withPrincipal(resp2.getCertificateArn()).withThingName("Java-App_Thing"));
有人知道如何创建将由CA证书签名的证书吗?
aws
所以推荐答案的文档相当模糊。我也有同样的问题。我是这样修好它的。假设您已向AWS IoT注册了您的CA, 即使您为您上载的CA启用自动注册,AWS IoT也不允许设备连接。证书将有几个选项用于JIT(准时)注册。
- 创建Lamba,在一定条件下激活设备;
- 列出MQTT上的事件以激活证书;
- 注册公钥。
选项3的执行步骤:
- 注册该物品
software.amazon.awssdk.services.iot.IotClient iotClient = IotClient.create()
//This allows AWS Credentials to be picked up using DefaultAWSCredentialsProviderChain
CreateThingRequest thingToBeCreated =
CreateThingRequest.builder().thingName("Unique Id of Device").build();
iotClient.createThing(thingToBeCreated);
- 注册并激活设备的公钥。
RegisterCertificateRequest registerCertificateRequest = RegisterCertificateRequest.builder()
.caCertificatePem("CA Pem as String")
.certificatePem("Device Public Key in Pem as String")
.setAsActive(true)
.build();
final RegisterCertificateResponse registerCertificateResponse = iotClient.registerCertificate(registerCertificateRequest);
- 将证书附加到该物件。
AttachThingPrincipalRequest attachThingPrincipalRequest = AttachThingPrincipalRequest.builder()
.thingName("Unique Id of Device")
.principal(registerCertificateResponse.certificateArn())
.build();
iotClient.attachThingPrincipal(attachThingPrincipalRequest);
- 可选,将策略附加到该对象,使其可以连接。
AttachPolicyRequest attachPolicyRequest = AttachPolicyRequest.builder()
.policyName("policy_that_allow_device_connections")
.target(registerCertificateResponse.certificateArn())
.build();
iotClient.attachPolicy(attachPolicyRequest);
相关文章