在设备代码中使用 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 使用 Raspberry Pi,并在您的 PC 或 Mac 上创建了密钥,可以将文件拖放到 VS Code 的资源管理器中以完成复制。
打开
app.py文件要使用 X.509 证书进行连接,您需要 IoT Hub 的主机名和 X.509 证书。首先,通过在创建设备客户端之前添加以下代码来创建一个包含主机名的变量:
pythonhost_name = "<host_name>"将
<host_name>替换为您的 IoT Hub 的主机名。您可以从connection_string的HostName部分获取主机名。它将是您的 IoT Hub 的名称,以.azure-devices.net结尾。在此代码下方,声明一个包含设备 ID 的变量:
pythondevice_id = "soil-moisture-sensor-x509"您需要一个包含 X.509 文件的
X509类实例。从azure.iot.device模块导入的类列表中添加X509:pythonfrom azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509使用您的证书和密钥文件创建一个
X509类实例,在host_name声明下方添加以下代码:pythonx509 = X509("./soil-moisture-sensor-x509-cert.pem", "./soil-moisture-sensor-x509-key.pem")这将使用之前创建的
soil-moisture-sensor-x509-cert.pem和soil-moisture-sensor-x509-key.pem文件创建X509类。将创建
device_client的代码行替换为以下内容:pythondevice_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)这将使用 X.509 证书而不是连接字符串进行连接。
删除包含
connection_string变量的代码行。运行您的代码。监控发送到 IoT Hub 的消息,并像之前一样发送直接方法请求。您将看到设备连接并发送土壤湿度读数,同时接收直接方法请求。
💁 您可以在 code/pi 或 code/virtual-device 文件夹中找到此代码。
😀 您的土壤湿度传感器程序已使用 X.509 证书成功连接到您的 IoT Hub!