在客户端连接到 Amazon IoT 时注册客户端证书(JITR)
您可以配置 CA 证书,以便在客户端首次连接到 Amazon IoT 时,允许使用它签发的客户端证书自动注册到 Amazon IoT。
要在客户端首次连接到 Amazon IoT 时注册客户端证书,您必须启用 CA 证书进行自动注册,并配置客户端在首次连接时提供所需的证书。
配置 CA 证书以支持自动注册(控制台)
使用 Amazon IoT 控制台配置 CA 证书以支持自动客户端证书注册
-
登录 Amazon 管理控制台,打开 Amazon IoT 控制台
。 -
在左侧的导航窗格中,依次选择安全、CA。
-
在证书颁发机构列表中,找到要启用自动注册的颁发机构,然后使用省略号图标打开选项菜单。
-
在选项菜单上,选择启用自动注册。
注意
证书颁发机构列表中不显示自动注册状态。要查看证书颁发机构的自动注册状态,您必须打开证书颁发机构的详细信息页面。
配置 CA 证书以支持自动注册(CLI)
如果您已将 CA 证书注册到 Amazon IoT,请使用 update-ca-certificateautoRegistrationStatus 设置为 ENABLE。
aws iot update-ca-certificate \ --certificate-idcaCertificateId\ --new-auto-registration-status ENABLE
如果您要在注册 CA 证书时启用 autoRegistrationStatus,请使用 register-ca-certificate
aws iot register-ca-certificate \ --allow-auto-registration \ --ca-certificate file://root_CA_cert_filename.pem\ --verification-cert file://verification_cert_filename.pem
使用 describe-ca-certificate
配置客户端的首次连接以进行自动注册
当客户端首次尝试连接到 Amazon IoT 时,在传输层安全性协议(TLS)握手期间,由您的 CA 证书签署的客户端证书必须存在于客户端上。
当客户端连接到 Amazon IoT 时,使用您在创建 Amazon IoT 客户端证书或创建您自己的客户端证书中创建的客户端证书。Amazon IoT 将 CA 证书识别为已注册的 CA 证书,注册客户端证书,并将其状态设置为 PENDING_ACTIVATION。这意味着,已自动注册客户端证书,该证书正在等待激活。客户端证书的状态必须为 ACTIVE,然后才能将其用于连接到 Amazon IoT。有关激活客户端证书的信息,请参阅 激活或停用客户端证书。
注意
您可以使用 Amazon IoT Core 即时注册(JITR)特征预调配设备,而无需将设备首次连接上的整个信任链发送到 Amazon IoT Core。可以出示 CA 证书,但连接时设备需要发送服务器名称指示(SNI)
当 Amazon IoT 自动注册证书时或者当客户端提供处于 PENDING_ACTIVATION 状态的证书时,Amazon IoT 将向以下 MQTT 主题发布消息:
$aws/events/certificates/registered/caCertificateId
其中 是颁发客户端证书的 CA 证书的 ID。caCertificateId
发布到该主题的消息具有以下结构:
{ "certificateId": "certificateId", "caCertificateId": "caCertificateId", "timestamp":timestamp, "certificateStatus": "PENDING_ACTIVATION", "awsAccountId": "awsAccountId", "certificateRegistrationTimestamp": "certificateRegistrationTimestamp" }
您可以创建一项规则,以侦听此主题并执行一些操作。我们建议您创建一项 Lambda 规则,以验证客户端证书不在证书吊销列表(CRL)中,激活该证书,创建策略并将其附加到证书中。该策略将确定客户端能够访问的资源。如果您创建的策略需要来自连接设备的客户端 ID,您可以使用规则的 clientid() 函数来检索客户端 ID。规则定义示例如下所示:
SELECT *, clientid() as clientid from $aws/events/certificates/registered/caCertificateId
在此示例中,规则订阅 JITR 主题 $aws/events/certificates/registered/ 并使用 clientid() 函数检索客户端 ID。然后规则将客户端 ID 附加到 JITR 有效载荷。有关规则 clientid() 函数的更多信息,请参阅 clientid()。caCertificateID
有关如何创建可侦听 $aws/events/certificates/registered/ 主题并执行这些操作的 Lambda 规则的更多信息,请参阅 Amazon IoT 上的客户端证书即时注册caCertificateID
如果在自动注册客户端证书期间发生任何错误或异常,Amazon IoT 将向您的 CloudWatch Logs 日志发送相关事件或消息。有关如何为您的账户设置日志的更多信息,请参阅 Amazon CloudWatch 文档。