本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用這些測試來判斷裝置與 之間的傳輸層安全通訊協定 (TLS) AWS IoT 是否安全。
注意
Device Advisor 現在支援 TLS 1.3。
Happy Path
- TLS 連線
-
驗證測試中的裝置是否可以完成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 Client 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 大型伺服器憑證
-
在您的裝置上驗證可以在接收和處理較大大小的伺服器憑證時完成TLS交握 AWS IoT 。此測試使用的伺服器憑證大小 (以位元組為單位) 大於 TLS Connect 測試案例和 IoT Core 目前使用的 20 點。在此測試案例期間, 會 AWS IoT 測試裝置的緩衝空間,TLS如果緩衝空間足夠大,TLS交握會完成,不會發生錯誤。此測試不會驗證裝置的MQTT實作。交TLS握程序完成後的測試案例 ds。
範例 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" } } ]範例 測試案例輸出:
-
通過 — 受測裝置使用 完成TLS交握 AWS IoT。
-
使用警告傳遞 — 受測裝置已完成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提醒訊息。
傳遞警告 — 受測裝置拒絕完成TLS交握 AWS IoT。不過,在關閉連線之前,不會傳送TLS提醒訊息。
失敗 — 測試中的裝置完成TLS交握 AWS IoT。