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

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

TLS

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

满意路径

“TLS Connect”

验证被测设备是否可以完成与 Amazon IoT 的 TLS 握手。此测试不会验证客户端设备的 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" } } ]
例 测试用例输出:
  • 通过 — 被测设备完成了与 Amazon IoT 的 TLS 握手。

  • 通过但带有警告 — 被测设备完成了与 Amazon IoT 的 TLS 握手,但是存在来自设备或 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 设备支持”

验证来自被测设备的 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%。在此测试用例中,将测试设备的 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" } } ]
例 测试用例输出:
  • 通过 — 被测设备完成了与 Amazon IoT 的 TLS 握手。

  • 通过但带有警告 — 被测设备完成了与 Amazon IoT 的 TLS 握手,但是存在来自设备或 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" } } ]
例 测试用例输出:
  • 通过 — 被测设备关闭了连接。

  • 失败 — 被测设备完成了与 Amazon IoT 的 TLS 握手。

“TLS 不正确的主题名称服务器证书/不正确的主题通用名称 (CN, Common Name)/主题备用名称 (SAN, Subject Alternative Name)”

验证如果提供与请求的域名不同的域名服务器证书,被测设备是否会关闭连接。

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" } } ]
例 测试用例输出:
  • 通过 — 被测设备关闭了连接。

  • 失败 — 被测设备完成了与 Amazon IoT 的 TLS 握手。

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" } } ]
例 测试用例输出:
  • 通过 — 在关闭连接之前,被测设备未能完成与 Amazon IoT 的 TLS 握手,但发送了 TLS 警报消息。

  • 通过但带有警告 — 在关闭连接之前,被测设备未能完成与 Amazon IoT 的 TLS 握手,也未能发送 TLS 警报消息。

  • 失败 — 被测设备完成了与 Amazon IoT 的 TLS 握手。