日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MQTT云網關X.509證書雙向認證

設備通過MQTT協議云網關接入物聯網平臺時,可開啟設備與服務端雙向認證能力,進行設備身份認證。本文使用Java代碼,以MQTT協議云網關一方認證的X.509認證為例,介紹設備如何通過X.509證書雙向認證接入物聯網平臺。

前提條件

  • 已購買尊享型企業版實例。本示例購買華東2(上海)地域的尊享型實例。具體操作,請參見購買企業版實例。

  • 已準備雙向認證的證書。

    本示例使用證書:根證書root-ca.crt、服務端證書私鑰server.key、服務端證書server.crt、設備端證書私鑰client.key和設備端證書client.crt。

背景信息

物聯網平臺提供MQTT云網關功能,支持使用X.509證書認證和自定義證書等能力進行設備認證并接入物聯網平臺進行通信,實現多種物聯網業務場景。

MQTT協議云網關設備認證和通信說明,請參見MQTT協議云網關概述。

準備工作

本文使用Java語言開發設備程序,準備Java開發環境如下:

創建云網關產品和設備

  1. 創建云網關產品(MQTT):配置如下圖所示,服務端證書server.crt服務端證書私鑰server.key、設備端根證書root-ca.crt。

    image
  2. 在云網關列表,復制網關URL保存。

    image
  3. 創建云網關設備(MQTT):本示例添加一個設備,MQTT Usernamedevice01,MQTT Passwordhello456。

開發設備程序

  1. 下載aiot-java-dual-auth-demo代碼包,并解壓。

  2. 打開IntelliJ IDEA,導入代碼包中的示例工程aiot-java-demo 3。

    • 在工程的pom.xml文件中,已添加Maven依賴。本示例使用依賴包如下:

         <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.mqttv5.client</artifactId>
            <version>1.2.5</version>
          </dependency>
          <dependency>
              <groupId>org.eclipse.paho</groupId>
              <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
              <version>1.2.0</version>
          </dependency>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
          </dependency>
      
          <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.47</version>
          </dependency>
    • 工程路徑/src/main/java/com/aliyun/iot下MQTT云網關雙向認證設備的程序文件為:

      • SslUtil.java:讀取設備證書。

      • Mqtt5TlsApp.java:開發設備接入。

  3. 在工程的pom.xml文件中,單擊Load Maven Changes圖標,完成依賴包下載。

  4. 在工程的/src/main路徑下,創建文件夾resources

  5. 在工程的/src/main/resources路徑下導入證書文件:根證書root-ca.crt、設備端證書私鑰client.key和設備端證書client.crt。

    image
  6. 打開工程下的/src/main/java/com/aliyun/iot/SslUtil.java文件,修改生成證書的密鑰。

    重要

    clientKs.setKeyEntry()中密鑰123456是生成證書時設置的,請根據實際場景修改。

    ......
          //注意密鑰,按自己的密鑰填寫
          clientKs.setKeyEntry("private-key", key.getPrivate(), "123456".toCharArray(), new java.security.cert.Certificate[]{clientCertificate});
    ......
  7. 打開工程下的/src/main/java/com/aliyun/iot/Mqtt5TlsApp.java文件,修改設備接入的相關參數。

    ......
            //MQTT連接參數
            String userName = "device01";
            String password = "hello456";
            String clientId = "test01_client1";
    
            //根證書保存路徑
            String caCertPath = "src/main/resources/root-ca.crt";
            //client證書保存路徑
            String clientCertPath= "src/main/resources/client.crt";
            //client私鑰保存路徑
            String clientKeyPath="src/main/resources/client.key";
    
            //MQTT協議云網關URL
            String broker = "ssl://iot-*******.igw.iothub.aliyuncs.com:1883";
    ......

    參數

    示例

    說明

    userName

    device01

    已添加云網關設備的MQTT Username。

    password

    hello456

    已添加云網關設備的MQTT Password。

    clientId

    test01_client1

    (可選)客戶端ID,需自定義,長度不可超過64個字符。建議使用設備的MAC地址或SN碼,方便您識別區分不同的客戶端。

    caCertPath

    src/main/resources/root-ca.crt

    設備端根證書root-ca.crt在工程下的路徑。

    clientCertPath

    src/main/resources/client.crt

    設備端證書文件client.crt在工程下的路徑。

    clientKeyPath

    src/main/resources/client.key

    設備端密鑰文件client.key在工程下的路徑。

    broker

    ssl://iot-*******.igw.iothub.aliyuncs.com:1883

    MQTT云網關設備接入地址,格式為ssl://${網關接入地址}:${端口號}。

    ${網關接入地址}${端口號}為已復制保存的網關URL中的域名和自定義端口號。

  8. 運行程序文件Mqtt5TlsApp.java,設備與服務端進行雙向認證。

    說明

    本示例Mqtt5TlsApp.java代碼中,添加了結束程序的代碼(Thread.sleep(20000);),即程序啟動成功,運行20秒后會主動斷開連接。實際場景中,您可根據業務需求自行設置設備上線、離線的邏輯。

    執行結果如圖所示,認證通過后,設備接入物聯網平臺。

    image