服务器身份验证
当您的设备或其它客户端尝试连接 Amazon IoT Core 时,Amazon IoT Core 服务器将发送您的设备用来对服务器进行身份验证的 X.509 证书。身份验证通过验证 X.509 证书链在 TLS 层进行。这与浏览器在您访问 HTTPS URL 时使用的方法相同。如果要使用您自己的证书颁发机构提供的证书,请参阅 管理 CA 证书。
当您的设备或其他客户端与 Amazon IoT Core 端点建立 TLS 连接时,Amazon IoT Core 会显示一个证书链,设备可使用该证书链来确认它们正在与 Amazon IoT Core 进行通信,而不是与模拟 Amazon IoT Core 的其它服务器进行通信。显示的链取决于设备连接到的端点类型和客户端与 Amazon IoT Core 在 TLS 握手期间协商的密码套件。
端点类型
Amazon IoT Core 支持 iot:Data-ATS。iot:Data-ATS 端点出示由 Amazon 信任服务
ATS 端点提供的证书由 Starfield 进行交叉签名。某些 TLS 客户端实现要求验证信任根,并要求将 Starfield CA 证书安装到客户端的信任存储中。
警告
建议不要使用对整个证书(包括颁发者名称等)进行哈希处理的证书固定方法,因为这将导致证书验证失败,因为我们提供的 ATS 证书由 Starfield 进行交叉签名并具有其它颁发者名称。
重要
使用 iot:Data-ATS 端点。Symantec 和 Verisign 证书已被弃用,并且 Amazon IoT Core 不再支持这两类证书。
您可以使用 describe-endpoint 命令创建 ATS 端点。
aws iot describe-endpoint --endpoint-type iot:Data-ATS
describe-endpoint 命令采用以下格式返回端点。
account-specific-prefix.iot.your-region.amazonaws.com
注意
首次调用 describe-endpoint 时,会创建一个端点。对 describe-endpoint 的所有后续调用将返回同一端点。
注意
要在 Amazon IoT Core 控制台中查看 iot:Data-ATS 端点,请选择设置。控制台仅显示 iot:Data-ATS 端点。
使用 Amazon SDK for Java 创建 IotDataPlaneClient
要创建使用 iot:Data-ATS 端点的 IotDataPlaneClient,您必须执行以下操作。
-
使用 DescribeEndpoint API 创建
iot:Data-ATS端点。 -
在创建
IotDataPlaneClient时指定该端点。
以下示例执行这两项操作。
public void setup() throws Exception { IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build(); String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress(); iot = IotDataPlaneClient.builder() .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN) .endpointOverride(URI.create("https://" + endpoint)) .region(Region.US_EAST_1) .build(); }
用于服务器身份验证的 CA 证书
根据您使用的数据端点的类型以及您协商的密码套件,Amazon IoT Core 服务器身份验证证书由以下根 CA 证书之一进行签名:
Amazon Trust Services 端点(首选)
注意
您可能需要右键单击这些链接,然后选择将链接另存为... 将这些证书另存为文件。
-
RSA 2048 位密钥:Amazon Root CA 1
。 -
RSA 4096 位密钥:Amazon Root CA 2。留待将来使用。
-
ECC 256 位密钥:Amazon Root CA 3
。 -
ECC 384 位密钥:Amazon Root CA 4。留待将来使用。
这些证书都由 Starfield 根 CA 证书
VeriSign 端点(传统)
-
RSA 2048 位密钥:VeriSign Class 3 Public Primary G5 根 CA 证书
服务器身份验证指南
有很多变量会影响设备验证 Amazon IoT Core 服务器身份验证证书的能力。例如,设备的内存可能太有限,无法容纳所有可能的根 CA 证书,或者设备可能会实施非标准的证书验证方法。由于这些原因,我们建议遵循以下准则:
-
我们建议您使用 ATS 端点并安装所有受支持的 Amazon Root CA 证书。
-
如果您无法在设备上存储所有这些证书,并且您的设备未使用基于 ECC 的验证,则可以省略 Amazon Root CA 3
和 Amazon Root CA 4 ECC 证书。如果您的设备未实施基于 RSA 的证书验证,则可以省略 Amazon Root CA 1 和 Amazon Root CA 2 RSA 证书。您可能需要右键单击这些链接,然后选择将链接另存为... 将这些证书另存为文件。 -
如果在连接到 ATS 端点时遇到服务器证书验证问题,请尝试将相关的交叉签名的 Amazon Root CA 证书添加到您的信任存储中。您可能需要右键单击这些链接,然后选择将链接另存为... 将这些证书另存为文件。
-
如果您遇到服务器证书验证问题,则您的设备可能需要明确信任根 CA。尝试将 Starfield Root CA Certificate
添加到您的信任存储。 -
如果您在执行上述步骤后仍遇到问题,请联系 Amazon 开发人员支持
。
注意
CA 证书具有一个过期日期,在该日期后,这些证书将无法用于验证服务器的证书。可能必须在 CA 证书的过期日期前替换这些证书。请确保可以更新所有设备或客户端上的根 CA 证书,以确保持续的连接并保持最新的安全最佳实践。
注意
在设备代码中连接到 Amazon IoT Core 时,请将证书传递到您用于连接的 API 中。您使用的 API 因 SDK 而异。有关更多信息,请参阅 Amazon IoT Core Device SDK。