快速入门:使用适用于 IoT 中心设备预配服务的 Java 设备 SDK 创建和预配模拟的 X.509 设备
在本快速入门中,我们在 Windows 计算机上创建一台模拟 X.509 设备。 我们使用设备预配服务 (DPS) 的单个注册,通过设备示例 Java 代码将此模拟设备连接到 IoT 中心。
先决条件
- 熟悉预配概念。
- 完成通过 Azure 门户设置 IoT 中心设备预配服务。
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- Java SE 开发工具包 8。
- Maven。
- Git。
准备环境
确保已在计算机上安装 Java SE 开发工具包 8。
下载并安装 Maven。
确保在计算机上安装 Git 并将其添加到可供命令窗口访问的环境变量。 请参阅软件自由保护组织提供的 Git 客户端工具,了解要安装的最新版
git
工具,其中包括 Git Bash,这是一个命令行应用,可以用来与本地 Git 存储库交互。打开命令提示符。 为设备模拟代码示例克隆 GitHub 存储库:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
导航到
azure-iot-sdk-
java` 根目录,并生成项目以下载全部所需的包。cd azure-iot-sdk-java mvn install -DskipTests=true
导航到证书生成器项目,然后生成该项目。
cd azure-iot-sdk-java/provisioning/provisioning-tools/provisioning-x509-cert-generator mvn clean install
创建自签名的 X.509 设备证书和单个注册项
在本部分,你将使用自签名的 X.509 证书。请务必记住以下事项:
- 自签名证书仅用于测试,不应在生产环境中使用。
- 自签名证书的默认过期日期为一年。
你将使用来自 Azure IoT SDK for Java 的示例代码创建要与模拟设备的个体注册条目一起使用的证书。
Azure IoT 设备预配服务支持两类注册:
本文演示单个注册。
使用前面步骤中的命令提示符,导航到
target
文件夹,然后执行在上一步中创建的 .jar 文件。cd target java -jar ./provisioning-x509-cert-generator-{version}-with-deps.jar
对于“是否需要输入公用名称”,请输入 N。 将
Client Cert
的输出(从 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- )复制到剪贴板。在 Windows 计算机上创建名为 X509individual.pem 的文件,在所选编辑器中将其打开,然后将剪贴板内容复制到该文件中。 保存该文件并关闭编辑器。
在命令提示符中,对于“是否需要输入验证码” ,请输入 N,并让程序输出保持打开状态,以便稍后在本快速入门中进行引用。 稍后,你将复制
Client Cert
和Client Cert Private Key
值,以在下一部分中使用。登录到 Azure 门户,选择左侧菜单上的“所有资源”按钮,打开设备预配服务实例 。
在“设备预配服务”菜单中,选择“管理注册” 。 选择“个人注册”选项卡,然后选择顶部的“添加个人注册”按钮 。
在“添加注册”面板中,输入以下信息:
选择“X.509” 作为标识证明机制 。
在“主要证书 .pem 或 .cer 文件”下,选择“选择文件”以选择在前述步骤中创建的证书文件 X509individual.pem。
(可选)可以提供以下信息:
- 选择与预配服务链接的 IoT 中心。
- 输入唯一设备 ID。 为设备命名时,请确保避免使用敏感数据。
- 使用设备所需的初始配置更新“初始设备孪生状态” 。
- 完成后,按“保存”按钮。
成功注册以后,X.509 设备会在“单个注册”选项卡的“注册 ID”列下显示为 microsoftriotcore。
模拟设备
从“设备预配服务”菜单中选择“概览”,记下“ID 范围”和“预配服务全局终结点”。
打开命令提示符。 导航到 Java SDK 存储库的示例项目文件夹。
cd azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-X509-sample
在代码中输入预配服务和 X.509 标识信息。 这在自动预配期间在注册设备之前用于证明模拟设备:
编辑文件
/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningX509Sample.java
,使之包括前面提到的“ID 范围”和“预配服务全局终结点”。 另请包括上一部分中提到的“客户端证书”和“客户端证书私钥”。private static final String idScope = "[Your ID scope here]"; private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]"; private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS; private static final String leafPublicPem = "<Your Public PEM Certificate here>"; private static final String leafPrivateKey = "<Your Private PEM Key here>";
复制/粘贴证书和私钥时,请使用以下格式:
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "-----END CERTIFICATE-----\n"; private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXX\n" + "-----END PRIVATE KEY-----\n";
生成示例。 导航到
target
文件夹,并执行已创建的 .jar 文件。mvn clean install cd target java -jar ./provisioning-x509-sample-{version}-with-deps.jar
在 Azure 门户中,导航到已链接到预配服务的 IoT 中心,然后打开“Device Explorer”边栏选项卡。 将模拟的 X.509 设备成功预配到中心后,设备 ID 会显示在“Device Explorer”边栏选项卡上,“状态”为“已启用”。 如果在运行示例设备应用程序之前已打开边栏选项卡,则可能需要按顶部的“刷新”按钮 。
注意
如果从设备的注册项中的默认值更改了“初始设备孪生状态”,则它会从中心拉取所需的孪生状态,并执行相应的操作。 有关详细信息,请参阅了解并在 IoT 中心内使用设备孪生。
清理资源
如果打算继续使用和探索设备客户端示例,请勿清理在本快速入门中创建的资源。 如果不打算继续学习,请按以下步骤删除本快速入门中创建的所有资源。
- 关闭计算机上的设备客户端示例输出窗口。
- 在 Azure 门户的左侧菜单中选择“所有资源”,然后选择设备预配服务。 打开服务的“管理注册”边栏选项卡,然后选择“单个注册”选项卡 。选中在本快速入门中注册的设备的“注册 ID”旁边的复选框,然后按窗格顶部的“删除”按钮。
- 在 Azure 门户的左侧菜单中选择“所有资源”,然后选择 IoT 中心 。 打开中心的“IoT 设备”边栏选项卡,选中在本快速入门中注册的设备的“设备 ID”旁边的复选框,然后按窗格顶部的“删除”按钮。
后续步骤
在本快速入门中,你在 Windows 计算机上创建了一个模拟 X.509 设备。 你在 Azure IoT 中心设备预配服务中配置了其注册,然后将设备自动预配到了 IoT 中心。 若要了解如何以编程方式注册 X.509 设备,请继续阅读快速入门中关于 X.509 设备的编程注册内容。