TLS - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

TLS

使用这些测试来确定您的设备和之间的传输层安全协议 (TLS) Amazon IoT 是否安全。

注意

Device Advisor 现在支持 TLS 1.3。

满意路径

TLS 连接

验证被测设备能否完成 TLS 握手。 Amazon 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 握手 Amazon IoT。

  • 通过但有警告 ——被测设备完成了 TLS 握手 Amazon IoT,但设备或 Amazon IoT发来了 TLS 警告消息。

  • 失败 — Amazon IoT 由于握手错误,被测设备未能完成 TLS 握手。

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" } } ]

密码套件

Amazon IoT 推荐的密码套件的 TLS Device Support

验证来自受测设备的 TLS Client Hello 消息中的密码套件是否包含建议的 Amazon 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" } } ]
例 测试用例输出:
  • 通过 — 被测试的设备密码套件至少包含一个推荐的 Amazon IoT 密码套件,并且不包含任何不支持的密码套件。

  • 通过但带有警告 — 设备密码套件至少包含一个 Amazon IoT 密码套件,但是:

    1. 它不包含任何建议的密码套件。

    2. 它包含不支持的密码套件。 Amazon IoT

    我们建议您验证任何不受支持的密码套件是否安全。

  • 失败 — 被测设备密码套件不包含任何 Amazon IoT 支持的密码套件。

较大的服务器证书

TLS 较大服务器证书

验证您的设备在接收和处理较大的服务器证书时,是否可以完成与 Amazon IoT 的 TLS 握手。此测试使用的服务器证书的大小(以字节为单位)比 TLS Connect 测试用例和 IoT Core 中当前使用的证书大小 20 在此测试用例中,请 Amazon IoT 测试设备的 TLS 缓冲空间如果缓冲空间足够大,则 TLS 握手可以顺利完成。此测试不验证设备的 MQTT 实施。测试用例在 TLS 握手过程完成后结束。

例 API 测试用例定义:
注意

EXECUTION_TIMEOUT 的默认值为 5 分钟。为了获得最佳效果,我们建议超时值为 2 分钟。如果此测试用例失败但 TLS 连接测试用例通过,我们建议您提高设备的 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" } } ]
例 测试用例输出:
  • 通过 — 被测设备完成了与 Amazon IoT的 TLS 握手。

  • 通过但有警告 ——被测设备完成了 TLS 握手 Amazon IoT,但设备或 Amazon IoT TLS 警告消息来自该设备。

  • 失败 — Amazon IoT 由于握手过程中出现错误,被测设备未能完成 TLS 握手。

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 握手 Amazon 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 握手 Amazon 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 握手。 Amazon IoT设备在关闭连接之前发送 TLS 警报消息。

  • 通过但带有警告 — 受测设备拒绝完成与 Amazon IoT的 TLS 握手。但是,它在关闭连接之前不会发送 TLS 警报消息。

  • 失败 — 被测设备使用完成 TLS 握手 Amazon IoT。