使用 OT CLI 測試安全 CoAP 資源的連線能力

前往 GitHub 查看原始碼

OpenThread 同時提供 Secure CoAP 伺服器和用戶端功能,可讓裝置 可連線至安全 CoAP 伺服器上的資源,並觀察 變更與目前狀態的變更

Secure CoAP 採用 Datagram 傳輸層安全標準 (DTLS) 建立 端對端連線

CLI 中提供的 Secure CoAP 代理程式可做為安全 CoAP 用戶端或安全 CoAP 伺服器。

本指南提供使用一些較常見安全 CoAP (coaps) 指令的基本工作。

安全 CoAP 指令

如需安全 CoAP 指令的清單,請輸入 help

coaps help
connect
delete
disconnect
get
isclosed
isconnactive
isconnected
post
psk
put
resource
set
start
stop
x509
Done

CLI 指令參考資料

如需所有指令的說明和語法,請參閱 CLI 指令參考資料。 安全 CoAP 指令會按照字母順序和 coaps 連線

安全 CoAP 伺服器和用戶端指令的使用範例

本例使用基本的 CLI 指令啟動安全的 CoAP 伺服器和用戶端。 在 Secure CoAP 伺服器上建立測試資源,並擁有安全 CoAP 用戶端 就會與資源互動範例資料僅供參考。

設定 DTLS 加密套件

coaps CLI 提供 pskx509 指令,可用於 簽署 PSK 金鑰和 X.509 憑證 如需指令語法和範例,請參閱 coaps pskcoaps x509

設定安全 CoAP 伺服器

在安全 CoAP 伺服器節點上執行下列步驟:

  1. 啟動 Secure CoAP 代理程式。

    coaps start
    Done
    
  2. 建立測試資源。

    coaps resource test-resource
    Done
    

設定安全 CoAP 用戶端

在安全 CoAP 用戶端節點上執行下列步驟:

  1. 啟動 Secure CoAP 代理程式:

    coaps start
    Done
    
  2. 執行 connect 指令,透過對等點初始化 DTLS 工作階段:

    coaps connect fdde:ad00:beef:0:9903:14b:27e0:5744
    Done
    coaps connected
    
  3. 執行 get 指令即可取得資源相關資訊:

    coaps get test-resource
    Done
    coaps response from fdde:ad00:beef:0:9903:14b:27e0:5744 with payload: 68656c6c6f576f726c6400
    

    伺服器回應的最後一個部分是 with payload: 字詞,後面接著 所有酬載位元組 (採十六進制格式)。在這個範例中 with payload: 68656c6c6f576f726c6400 表示目前的酬載 該資源的 16 進位值 68656c6c6f576f726c6400 會轉換為字串 helloWorld。如要進一步瞭解如何使用 payload 選項,請參閱 coaps 貼文

  4. 您可以使用 put 指令修改資源:

    coaps put test-resource con hellothere
    Done
    coaps response from fdde:ad00:beef:0:9903:14b:27e0:5744
    

    在此範例中,con 表示您想要傳送可靠的訊息, 系統會透過可確認的訊息 (con) 取得,並傳送至安全 CoAP 伺服器。 預設設定是傳送無法確認 (non-con) 的訊息。

    字串 hellothere 是使用選用 payload 的範例 參數 (當 typeconnon-con 時)。 如需更多資訊,請參閱 coaps put

    伺服器會以其 IPv6 位址回應,表示要求已處理。

傳送至安全 CoAP 伺服器的回應

在伺服器上,本範例的輸出內容會與下列內容相似:

coaps request from fdde:ad00:beef:0:9e68:576f:714c:f395 GET
coaps response sent
coaps request from fdde:ad00:beef:0:9e68:576f:714c:f395 PUT with payload: 68656c6c6f7468657265
coaps response sent

68656c6c6f7468657265payload 值是 hellothere 字串, 傳遞至 ASCII 程式碼位元組序列