

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

# 运输安全 AWS IoT Core
<a name="transport-security"></a>

TLS（传输层安全性协议）是一种加密协议，旨在通过计算机网络进行安全通信。 AWS IoT Core 设备网关要求客户在设备与网关的连接中使用 TLS 对传输中的所有通信进行加密。TLS 用于实现所支持的应用程序协议（MQTT、HTTP 和 WebSocket）的 AWS IoT Core机密性。TLS 支持适用于许多编程语言和操作系统。 AWS 其中的数据由特定 AWS 服务加密。有关其他 AWS 服务上的数据加密的更多信息，请参阅该服务的安全文档。

**Topics**
+ [TLS 协议](#tls-ssl-policy)
+ [安全策略](#tls-policy-table)
+ [有关运输安全的重要注意事项 AWS IoT Core](#tls-ssl-core)
+ [LoRaWAN 无线设备的传输安全](#tls-lorawan)

## TLS 协议
<a name="tls-ssl-policy"></a>

AWS IoT Core 支持以下版本的 TLS 协议：
+ TLS 1.3 
+ TLS 1.2

使用 AWS IoT Core，您可以在域配置中配置 TLS 设置（适用于 [TLS 1.2](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [和 TLS 1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)）。有关更多信息，请参阅 [在域配置中配置 TLS 设置](iot-endpoints-tls-config.md)。

## 安全策略
<a name="tls-policy-table"></a>

安全策略是 TLS 协议及其密码的组合，此协议及其密码用于确定在客户端和服务器之间的 TLS 协商期间支持哪些协议和密码。您可以根据需要将设备配置为使用预定义的安全策略。请注意， AWS IoT Core 这不支持自定义安全策略。

连接设备时，您可以为设备选择一种预定义的安全策略 AWS IoT Core。中最新的预定义安全策略的名称 AWS IoT Core 包括基于其发布年份和月份的版本信息。非AWS GovCloud (US) 区域的默认预定义安全策略`IoTSecurityPolicy_TLS13_1_2_2022_01`为`IoTSecurityPolicy_TLS13_1_2_2022_10`和 AWS GovCloud (US) 区域。要指定安全策略，您可以使用 AWS IoT 控制台或 AWS CLI。有关更多信息，请参阅 [在域配置中配置 TLS 设置](iot-endpoints-tls-config.md)。

下表描述了 AWS IoT Core 支持的最新预定义安全策略。为了使策略名称能够容纳在标题行中，已将 `IotSecurityPolicy_` 从名称中删除。


<table>
<thead>
  <tr><th>安全策略</th><th>TLS13\_1\_3\_2022\_10</th><th>TLS13\_1\_2\_2022\_10</th><th>TLS12\_1\_2\_2022\_10</th><th colspan="2">TLS12\_1\_0\_2016\_01\*</th><th colspan="2">TLS12\_1\_0\_2015\_01\*</th><th>TLS13\_1\_2\_2022\_01\*</th></tr>
</thead>
<tbody>
  <tr><td>TCP 端口</td><td>443/8443/8883</td><td>443/8443/8883</td><td>443/8443/8883</td><td>443</td><td>8443/8883</td><td>443</td><td>8443/8883</td><td>443/8443/8883</td></tr>
  <tr><td colspan="9">TLS 协议</td></tr>
  <tr><td>TLS 1.2</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>TLS 1.3</td><td>✓</td><td>✓</td><td></td><td></td><td></td><td></td><td></td><td>✓</td></tr>
  <tr><td colspan="9">TLS 密码</td></tr>
  <tr><td>TLS\_AES\_128\_GCM\_SHA256</td><td>✓</td><td>✓</td><td></td><td></td><td></td><td></td><td></td><td>✓</td></tr>
  <tr><td>TLS\_AES\_256\_GCM\_SHA384</td><td>✓</td><td>✓</td><td></td><td></td><td></td><td></td><td></td><td>✓</td></tr>
  <tr><td>TLS\_CHACHA20\_POLY1305\_SHA256</td><td>✓</td><td>✓</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
  <tr><td>ECDHE-RSA-AES128-GCM-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-RSA-AES128-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-RSA-AES128-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-RSA-AES256-GCM-SHA384</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-RSA-AES256-SHA384</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-RSA-AES256-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>AES128-GCM-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td></td></tr>
  <tr><td>AES128-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td></td><td>✓</td><td>✓</td><td></td></tr>
  <tr><td>AES128-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>AES256-GCM-SHA384</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td></td></tr>
  <tr><td>AES256-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td></td></tr>
  <tr><td>AES256-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>DHE-RSA-AES256-SHA</td><td></td><td></td><td></td><td></td><td></td><td>✓</td><td>✓</td><td></td></tr>
  <tr><td>ECDHE-ECDSA-AES128-GCM-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-ECDSA-AES128-SHA256</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-ECDSA-AES128-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-ECDSA-AES256-GCM-SHA384</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-ECDSA-AES256-SHA384</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  <tr><td>ECDHE-ECDSA-AES256-SHA</td><td></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
</tbody>
</table>


**注意**  
`TLS12_1_0_2016_01`仅在以下版本中可用 AWS 区域：ap-east-1、ap-northeast-2、ap-southeast-1、ap-southeast-2、ca-central-1、cn-northeast-1、cn-northeast-1、eu-west-2、eu-west-2、eu-west-3、me-south-1、sa-east-1、us-east-2、us-west-1。  
`TLS12_1_0_2015_01`仅在以下版本中可用 AWS 区域：ap-northeast-1、ap-southeast-1、eu-central-1、eu-west-1、us-east-1、us-east-1、us-west-1、us-west-2。  
`TLS13_1_2_2022_01`仅在 AWS GovCloud (US) 地区可用。

## 有关运输安全的重要注意事项 AWS IoT Core
<a name="tls-ssl-core"></a>

对于 AWS IoT Core 使用 [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) 连接的设备，TLS 会加密设备与代理之间的连接，并 AWS IoT Core 使用 TLS 客户端身份验证来识别设备。有关更多信息，请参阅[客户端身份验证](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html)。对于 AWS IoT Core 使用 [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) 连接的设备，TLS 会加密设备与代理之间的连接，并将身份验证委托给 AWS 签名版本 4。有关更多信息，请参阅《AWS 一般参考》**中的[使用签名版本 4 签署请求](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html)。

将设备连接到时 AWS IoT Core，发送[服务器名称指示 (SNI) 扩展](https://tools.ietf.org/html/rfc3546#section-3.1)名不是必需的，但强烈建议您这样做。要使用[多账户注册](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert)、[自定义域](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html)和 [VPC 端点](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html)以及[配置的 TLS 策略](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html)等特征，您必须使用 SNI 扩展并在 `host_name` 字段中提供完整的端点地址。`host_name` 字段必须包含您调用的端点。该端点必须是以下端点之一：
+ `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS` 返回的 `endpointAddress`
+ `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "{{domain_configuration_name}}"` 返回的 `domainName`

使用错误或无效`host_name`值的设备尝试的连接将失败。 AWS IoT Core 将为 “[自定义](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html)身份验证” CloudWatch 的身份验证类型记录失败。

AWS IoT Core 不支持 [SessionTicket TLS 扩展](https://www.ietf.org/rfc/rfc5077.txt)。

## LoRaWAN 无线设备的传输安全
<a name="tls-lorawan"></a>

LoRa广域网设备遵循[金雅拓、Actility和Semtech在LoRa广域网™ 安全：为 LoRa 联盟准备的白皮书™ 中描述的安全](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf)实践。

有关 LoRa WAN 设备传输安全的更多信息，请参阅 [LoRaWAN 数据和传输安全](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html)。