使用设备代码中的X.509证书-虚拟IoT硬件和RaspberryPi


文档摘要

使用设备代码中的X.509证书 - 虚拟IoT硬件和Raspberry Pi 在本课程的这一部分中,您将使用X.509证书将虚拟IoT设备或Raspberry Pi连接到IoT Hub。 将设备连接到IoT Hub 下一步是使用X.509证书将设备连接到IoT Hub。 任务 - 连接到IoT Hub 将密钥和证书文件复制到包含您的IoT设备代码的文件夹中。如果您通过VS Code Remote SSH在PC或Mac上创建了密钥并正在使用Raspberry Pi,则可以将文件拖放到VS Code的资源管理器中以进行复制。 打开文件 若要使用X.509证书进行连接,您需要IoT Hub的主机名以及X.509证书。

使用设备代码中的X.509证书 - 虚拟IoT硬件和Raspberry Pi

在本课程的这一部分中,您将使用X.509证书将虚拟IoT设备或Raspberry Pi连接到IoT Hub。

将设备连接到IoT Hub

下一步是使用X.509证书将设备连接到IoT Hub。

任务 - 连接到IoT Hub

  1. 将密钥和证书文件复制到包含您的IoT设备代码的文件夹中。如果您通过VS Code Remote SSH在PC或Mac上创建了密钥并正在使用Raspberry Pi,则可以将文件拖放到VS Code的资源管理器中以进行复制。

  2. 打开文件 app.py

  3. 若要使用X.509证书进行连接,您需要IoT Hub的主机名以及X.509证书。首先,通过添加以下代码来创建一个包含主机名的变量,在创建设备客户端之前:

    host_name = "<host_name>"

    <host_name> 替换为您的IoT Hub主机名(例如 `` with your IoT Hub's host name. You can get this from the HostName section in the connection_string. It will be the name of your IoT Hub, ending with .azure-devices.net)。

  4. 在这之下,声明一个包含设备ID的变量:

    device_id = "soil-moisture-sensor-x509"
  5. 您需要一个 X509 class containing the X.509 files. Add X509 to the list of classes imported from the azure.iot.device 模块的实例:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
  6. 创建一个 X509 class instance using your certificate and key files by adding this code below the host_name 声明:

    x509 = X509("./soil-moisture-sensor-x509-cert.pem", "./soil-moisture-sensor-x509-key.pem")

    这将使用连接字符串创建 X509 class using the soil-moisture-sensor-x509-cert.pem and soil-moisture-sensor-x509-key.pem files created earlier.

  7. Replace the line of code that creates the device_client,包括以下内容:

    device_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)

    这将使用X.509证书而不是连接字符串进行连接。

  8. 删除带有 connection_string 变量的行。

  9. 运行您的代码。监控发送到IoT Hub的消息,并像以前一样发送直接方法请求。您会看到设备连接并发送土壤湿度读数,同时接收直接方法请求。

您可以在 code/picode/virtual-device 文件夹中找到此代码。

您的土壤湿度传感器程序现在已使用X.509证书连接到IoT Hub!

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


发布者: 作者: 转发
评论区 (0)
U