跳至主要内容

在您的設備代碼中使用 X.509 證書 - 虛擬物聯網硬體和樹莓派

在本課程的這一部分,您將使用 X.509 證書將您的虛擬物聯網設備或樹莓派連接到您的 IoT 中樞。

將您的設備連接到 IoT 中樞

下一步是使用 X.509 證書將您的設備連接到 IoT 中樞。

任務 - 連接到 IoT 中樞

  1. 將密鑰和證書文件複製到包含您的 IoT 設備代碼的文件夾中。如果您通過 VS Code Remote SSH 使用樹莓派並在您的 PC 或 Mac 上創建了密鑰,您可以將文件拖放到 VS Code 的資源管理器中以進行複製。

  2. 打開 app.py 文件

  3. 要使用 X.509 證書進行連接,您將需要 IoT 中樞的主機名和 X.509 證書。首先通過在創建設備客戶端之前添加以下代碼來創建包含主機名的變量:

    host_name = "<host_name>"

    <host_name> 替換為您的 IoT 中樞的主機名。您可以從 connection_string 中的 HostName 部分獲取此信息。它將是您的 IoT 中樞的名稱,以 .azure-devices.net 結尾

  4. 在此之下,聲明一個包含設備 ID 的變量:

    device_id = "soil-moisture-sensor-x509"
  5. 您將需要一個包含 X.509 文件的 X509 類實例。將 X509 添加到從 azure.iot.device 模塊導入的類列表中:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
  6. 通過在 host_name 聲明下方添加此代碼,使用您的證書和密鑰文件創建一個 X509 類實例:

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

    這將使用先前創建的 soil-moisture-sensor-x509-cert.pemsoil-moisture-sensor-x509-key.pem 文件創建 X509 類。

  7. 用以下代碼替換從連接字符串創建 device_client 的代碼行:

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

    這將使用 X.509 證書而不是連接字符串進行連接。

  8. 刪除包含 connection_string 變量的代碼行。

  9. 運行您的代碼。像以前一樣監控發送到 IoT 中樞的消息,並發送直接方法請求。您將看到設備連接並發送土壤濕度讀數,以及接收直接方法請求。

💁 您可以在 code/picode/virtual-device 文件夾中找到此代碼。

😀 您的土壤濕度傳感器程序已使用 X.509 證書連接到您的 IoT 中樞!