本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 加密套件,但是:
-
它不包含任何建議的密碼套件
-
它包含 不支援的密碼套件 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。