TLS - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

TLS

使用這些測試來判斷裝置與 之間的傳輸層安全通訊協定 (TLS) AWS IoT 是否安全。

注意

Device Advisor 現在支援 TLS 1.3。

Happy Path

TLS Connect

驗證測試中的裝置是否可以完成 TLS 交握 AWS IoT。此測試不會驗證用戶端裝置的 MQTT 實作。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。為了獲得最佳結果,我們建議使用 2 分鐘的逾時值。

"tests":[ { "name":"my_tls_connect_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Connect", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過 — 正在測試的裝置已完成 TLS 交握 AWS IoT。

  • 傳遞警告 — 測試下的裝置已完成 TLS 交握 AWS IoT,但有來自裝置 或 的 TLS 警告訊息 AWS IoT。

  • 失敗 — 由於交握錯誤,測試中的裝置無法完成與 的 TLS AWS IoT 交握。

TLS 接收最大大小的片段

此測試案例驗證您的裝置是否可以接收和處理 TLS 最大大小的片段。您的測試裝置必須訂閱 QoS 1 的預先設定主題,才能接收大型承載。您可以使用組態 ${payload} 自訂承載。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。為了獲得最佳結果,我們建議使用 2 分鐘的逾時值。

"tests":[ { "name":"TLS Receive Maximum Size Fragments", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds "PAYLOAD_FORMAT":"{"message":"${payload}"}", // A string with a placeholder ${payload}, or leave it empty to receive a plain string. "TRIGGER_TOPIC": "test_1" // A topic to which a device will subscribe, and to which a test case will publish a large payload. }, "test":{ "id":"TLS_Receive_Maximum_Size_Fragments", "version":"0.0.0" } } ]

密碼套件

TLS 裝置支援 AWS IoT 建議的密碼套件

驗證來自待測裝置的 TLS 用戶端 Hello 訊息中的密碼套件是否包含建議的 AWS IoT 密碼套件。它提供裝置支援的密碼套件的更多洞見。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。我們建議的逾時值為 2 分鐘。

"tests":[ { "name":"my_tls_support_aws_iot_cipher_suites_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Support_AWS_IoT_Cipher_Suites", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過 — 測試密碼套件下的裝置至少包含其中一個建議的 AWS IoT 密碼套件,且不包含任何不支援的密碼套件。

  • 通過但有警告 - 裝置密碼套件至少包含其中一個 AWS IoT 加密套件,但是:

    1. 它不包含任何建議的密碼套件

    2. 它包含 不支援的密碼套件 AWS IoT。

    我們建議您驗證任何不支援的密碼套件是否安全。

  • 失敗 — 測試密碼套件下的裝置不包含任何 AWS IoT 支援的密碼套件。

較大型的伺服器憑證

TLS 大型伺服器憑證

接收和處理較大型伺服器憑證時,驗證您的裝置是否可以與 AWS IoT 完成 TLS 交握。此測試使用的伺服器憑證大小 (以位元組為單位) 大於目前在 TLS Connect 測試案例和 IoT Core 中使用的憑證大小 20 在此測試案例中, AWS IoT 測試裝置的 TLS 緩衝空間 如果緩衝空間足夠大,則 TLS 交握會完成而不會發生錯誤。此測試不會驗證裝置的 MQTT 實作。TLS 交握程序完成後,測試案例即會停止。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。為了獲得最佳結果,我們建議使用 2 分鐘的逾時值。如果此測試案例失敗,但 TLS Connect 測試案例通過,我們建議您增加裝置的 TLS 緩衝區空間限制。增加緩衝區空間限制,確保您的裝置可以在大小增加的情況下處理更大的伺服器憑證。

"tests":[ { "name":"my_tls_large_size_server_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Large_Size_Server_Cert", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過:待測裝置已完成與 AWS IoT的 TLS 交握。

  • 傳遞警告 — 待測裝置已完成 TLS 交握 AWS IoT,但有來自裝置或 的 TLS 警告訊息 AWS IoT。

  • 失敗 — 測試中的裝置無法完成 TLS 交握, AWS IoT 因為交握過程中發生錯誤。

TLS 不安全伺服器憑證

未由認可的 CA 簽署

驗證若提供的伺服器憑證沒有來自 ATS CA 的有效簽章,待測裝置是否會關閉連線。裝置應該只會連接到提供有效憑證的端點。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。我們建議的逾時值為 2 分鐘。

"tests":[ { "name":"my_tls_unsecure_server_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Unsecure_Server_Cert", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過:待測裝置已關閉連線。

  • 失敗 — 正在測試的裝置已完成 TLS 交握 AWS IoT。

TLS 不正確的主體名稱伺服器憑證 / 不正確的主體通用名稱 (CN) / 主體別名 (SAN)

驗證若為網域名稱提供的伺服器憑證不同於所請求的伺服器憑證,測試下的裝置是否會關閉連線。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。我們建議的逾時值為 2 分鐘。

"tests":[ { "name":"my_tls_incorrect_subject_name_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Incorrect_Subject_Name_Server_Cert", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過:待測裝置已關閉連線。

  • 失敗 — 待測裝置已完成 TLS 交握 AWS IoT。

TLS 過期伺服器憑證

過期的伺服器憑證

驗證如果所提供伺服器憑證已過期,測試下的裝置是否會關閉連線。

範例 API 測試案例定義:
注意

EXECUTION_TIMEOUT 的預設值為 5 分鐘。我們建議的逾時值為 2 分鐘。

"tests":[ { "name":"my_tls_expired_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Expired_Server_Cert", "version":"0.0.0" } } ]
範例 測試案例輸出:
  • 通過 — 待測裝置拒絕完成 TLS 交握 AWS IoT。裝置會在關閉連線前傳送 TLS 警示訊息。

  • 通過但有警告 - 待測裝置拒絶完成與 AWS IoT的 TLS 交握。不過,它不會在關閉連線之前傳送 TLS 警示訊息。

  • 失敗 — 測試中的裝置完成 TLS 交握 AWS IoT。