快速入门:使用 Python 将 X.509 设备注册到设备预配服务
在本快速入门中,你将使用 Python 以编程方式创建使用中间或根 CA X.509 证书的注册组。 注册组可以控制对设备的预配服务的访问,此类设备在其证书链中共享常用签名证书。 该注册组是使用 Python 预配服务 SDK 和一个示例 Python 应用程序创建的。
先决条件
- 完成使用 Azure 门户设置 IoT 中心设备预配服务。
- 具有活动订阅的 Azure 帐户。 试用订阅。
- Python 2.x 或 3.x。 将 Python 添加到特定于平台的环境变量。 本快速入门将在下面安装 Python 预配服务 SDK。
- Pip(如果 Python 分发版中未附带)。
- Git。
重要
本文仅适用于已弃用的 V1 Python SDK。 V2 中尚不提供用于 IoT 中心设备预配服务的设备和服务客户端。 该团队目前正在努力使 V2 具有功能奇偶一致性。
准备测试证书
对于本快速入门,必须具有一个包含中间或根 CA X.509 证书的公共部分的 .pem 或.cer 文件。 此证书必须上传到预配服务,并由该服务进行验证。
若要详细了解如何将基于 X.509 证书的公钥基础结构 (PKI) 与 Azure IoT 中心和设备预配服务配合使用,请参阅 X.509 CA 证书安全概述。
Azure IoT C SDK 包含的测试工具可以帮助你创建 X.509 证书链、从该链上传根证书或中间证书,以及通过服务执行所有权证明操作,对证书进行验证。 根据设计,使用 SDK 工具创建的证书只能用于开发测试。 这些证书不得在生产环境中使用。 它们包含硬编码的密码(“1234”),在 30 天后过期。 若要了解如何获取适用于生产用途的证书,请参阅 Azure IoT 中心文档中的如何获取 X.509 CA 证书。
若要使用此测试工具来生成证书,请执行以下步骤:
找到最新版 Azure IoT C SDK 的标记名称。
打开命令提示符或 Git Bash shell,并切换到计算机上的某个工作文件夹。 运行以下命令,克隆最新版 Azure IoT C SDK GitHub 存储库。 使用在上一步找到的标记作为
-b
参数的值:git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
应该预料到此操作需要几分钟才能完成。
测试工具位于你克隆的存储库的 azure-iot-sdk-c/tools/CACertificates 中。
根据管理示例和教程的测试 CA 证书中的步骤进行操作。
修改 Python 示例代码
此部分演示如何向示例代码添加 X.509 设备的预配详细信息。
使用文本编辑器,新建一个 EnrollmentGroup.py 文件。
在 EnrollmentGroup.py 文件的开头添加以下
import
语句和变量: 然后,将dpsConnectionString
替换为你的连接字符串,该字符串位于 Azure 门户的设备预配服务的“共享访问策略” 下。 将证书占位符替换为此前在准备测试证书中创建的证书。 最后,创建唯一的registrationid
,确保其只包含小写字母数字和连字符。from provisioningserviceclient import ProvisioningServiceClient from provisioningserviceclient.models import EnrollmentGroup, AttestationMechanism CONNECTION_STRING = "{dpsConnectionString}" SIGNING_CERT = """-----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE-----""" GROUP_ID = "{registrationid}"
添加以下函数和函数调用,以便执行组注册创建操作:
def main(): print ( "Initiating enrollment group creation..." ) psc = ProvisioningServiceClient.create_from_connection_string(CONNECTION_STRING) att = AttestationMechanism.create_with_x509_signing_certs(SIGNING_CERT) eg = EnrollmentGroup.create(GROUP_ID, att) eg = psc.create_or_update(eg) print ( "Enrollment group created." ) if __name__ == '__main__': main()
保存并关闭 EnrollmentGroup.py 文件。
运行示例组注册
Azure IoT 设备预配服务支持两类注册:
使用 Python 预配服务 SDK 创建个人注册是正在进行的一项工作。 若要了解详细信息,请参阅使用 X.509 证书控制设备对预配服务的访问。
打开命令提示符,并运行以下命令来安装 azure-iot-provisioning-device-client。
pip install azure-iothub-provisioningserviceclient
在命令提示符下运行此脚本。
python EnrollmentGroup.py
观察成功注册后的输出。
在 Azure 门户中导航到预配服务。 单击“管理注册”。 请注意,X.509 设备组显示在“注册组”选项卡下,带有此前创建的名称
registrationid
。
清理资源
如果打算学习 Java 服务示例,请勿清理本快速入门中创建的资源。 如果不打算继续学习,请按以下步骤删除本快速入门中创建的所有资源。
- 关闭计算机上的 Java 示例输出窗口。
- 关闭计算机上的“X509 证书生成器” 窗口。
- 在 Azure 门户中导航到设备预配服务,选择“管理注册”,然后选择“注册组”选项卡 。选中通过本快速入门注册的 X.509 设备的“组名称”旁边的复选框,然后按窗格顶部的“删除”按钮 。
后续步骤
在本快速入门中,你将模拟的 X.509 设备组注册到了设备预配服务。 若要深入了解设备预配,请继续学习本教程有关如何在 Azure 门户中进行设备预配服务设置的内容。