用于 OCSP 绑定的服务器证书配置
Amazon IoT Core 支持服务器证书的在线证书状态协议(OCSP)
您可以通过定期查询 OCSP 响应程序,启用 Amazon IoT Core 中的服务器证书 OCSP 绑定来检查证书的有效性。OCSP 绑定设置是使用自定义域创建或更新域配置的过程中的一环。OCSP 绑定会持续检查服务器证书的吊销状态。这有助于验证已被 CA 吊销的所有证书是否不再受连接到您自定义域的客户端的信任。有关更多信息,请参阅 在 Amazon IoT Core 中启用服务器证书 OCSP。
服务器证书 OCSP 装绑定提供实时吊销状态检查,可减少与检查吊销状态相关的延迟,并改善安全连接的隐私性和可靠性。有关使用 OCSP 绑定的好处的更多信息,请参阅 与客户端 OCSP 检查相比使用 OCSP 绑定的好处。
注意
此功能在 Amazon GovCloud (US) Regions 中不可用。
本主题内容:
什么是 OCSP?
在线证书状态协议(OCSP)有助于为传输层安全性协议(TLS)握手提供服务器证书的吊销状态。
重要概念
以下关键概念提供了有关在线证书状态协议(OCSP)的详细信息。
OCSP
OCSP
OCSP 响应程序
OCSP 响应程序(也称为 OCSP 服务器)接收并响应来自想要验证证书吊销状态的客户端的 OCSP 请求。
客户端 OCSP
在客户端 OCSP 中,TLS 握手期间,客户端使用 OCSP 与 OCSP 响应程序联系,来检查证书的吊销状态。
服务器端 OCSP
在服务器端 OCSP(也称为 OCSP 绑定)中,服务器(而不是客户端)可以向 OCSP 响应程序发出请求。服务器将 OCSP 响应绑定到证书,然后在 TLS 握手期间将其返回给客户端。
OCSP 示意图
下图说明了客户端 OCSP 和服务器端 OCSP 的工作原理。
客户端 OCSP
客户端发送一条
ClientHello消息,来启动与服务器的 TLS 握手。服务器收到消息并用
ServerHello消息进行响应。服务器还将服务器证书发送给客户端。客户端验证服务器证书并从中提取 OCSP URI。
客户端向 OCSP 响应程序发送证书吊销检查请求。
OCSP 响应程序发送 OCSP 响应。
客户端验证来自 OCSP 响应的证书状态。
TLS 握手完成。
服务器端 OCSP
-
客户端发送一条
ClientHello消息,来启动与服务器的 TLS 握手。 服务器收到消息并获取最新缓存的 OCSP 响应。如果缓存的响应丢失或已过期,服务器将调用 OCSP 响应程序来获取证书状态。
OCSP 响应程序向服务器发送 OCSP 响应。
服务器发送一条
ServerHello消息。服务器还将服务器证书和证书状态发送给客户端。客户端验证 OCSP 证书状态。
TLS 握手完成。
OCSP 绑定的工作原理
OCSP 绑定用于在客户端和服务器之间进行 TLS 握手期间检查服务器证书吊销状态。服务器向 OCSP 响应程序发出 OCSP 请求,并将 OCSP 响应绑定到返回给客户端的证书。通过让服务器向 OCSP 响应程序发出请求,可以缓存响应,然后多次用于许多客户端。
Amazon IoT Core 中的 OCSP 绑定工作原理
下图显示了 Amazon IoT Core 中服务器端 OCSP 绑定的工作原理。
-
设备需要在启用 OCSP 绑定的自定义域中注册。
-
Amazon IoT Core 每小时调用一次 OCSP 响应程序来获取证书状态。
-
OCSP 响应程序接收请求,发送最新的 OCSP 响应,并存储缓存的 OCSP 响应。
-
设备发送一条
ClientHello消息来启动与 Amazon IoT Core 的 TLS 握手。 -
Amazon IoT Core 从服务器缓存中获取最新的 OCSP 响应,服务器缓存以证书的 OCSP 响应进行响应。
-
服务器向设备发送
ServerHello消息。服务器还将服务器证书和证书状态发送给客户端。 -
设备验证 OCSP 证书状态。
-
TLS 握手完成。
与客户端 OCSP 检查相比使用 OCSP 绑定的好处
使用服务器证书 OCSP 绑定的一些优点包括:
改善了隐私性
如果没有 OCSP 绑定,客户端的设备可能会将信息暴露给第三方 OCSP 响应程序,从而可能危及用户隐私。OCSP 绑定通过让服务器获取 OCSP 响应并将其直接传送给客户端,从而缓解了此问题。
提高了可靠性
OCSP 绑定可以提高安全连接的可靠性,因为它可以降低 OCSP 服务器中断的风险。对 OCSP 响应进行绑定时,服务器会将最新的响应包含在证书内。这样,即使 OCSP 响应程序暂时不可用,客户端也可以获取吊销状态。OCSP 绑定有助于缓解这些问题,因为服务器会定期获取 OCSP 响应并将缓存的响应包含在 TLS 握手。这减少了对 OCSP 响应者实时可用性的依赖。
减少服务器有效载荷
OCSP 绑定将响应 OCSP 响应程序的 OCSP 请求的负担转移到服务器。此举有助于更均匀地分配有效载荷,从而提高证书验证过程的效率和可扩展性。
减少延迟
OCSP 绑定减少了 TLS 握手期间与检查证书吊销状态相关的延迟。客户端不必单独查询 OCSP 服务器,而是在握手期间发送请求并附上 OCSP 响应和服务器证书。
在 Amazon IoT Core 中启用服务器证书 OCSP
要在 Amazon IoT Core 中启用服务器证书 OCSP 绑定,请为自定义域创建域配置或更新现有自定义域配置。有关为自定义域创建域配置的一般信息,请参阅 创建和配置客户托管域。
按照以下说明使用 Amazon Web Services 管理控制台 或 Amazon CLI 启用 OCSP 服务器绑定。
要使用 Amazon IoT 控制台启用服务器证书 OCSP 绑定,请执行以下操作:
在导航菜单中,选择设置,然后选择创建域配置,或为自定义域选择现有域配置。
如果您在上一步中选择创建新的域配置,您将看到创建域配置页面。在域配置属性部分中,选择自定义域。输入创建域配置的信息。
如果您选择更新自定义域的现有域配置,您将看到域配置详细信息页面。选择编辑。
要启用 OCSP 服务器绑定,请在服务器证书配置小节中选择启用服务器证书 OCSP 绑定。
-
选择创建域配置或更新域配置。
要使用 Amazon CLI 启用服务器证书 OCSP 绑定,请执行以下操作:
如果您为自定义域创建新的域配置,则启用 OCSP 服务器绑定的命令可能如下所示:
aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3\ --server-certificate-config "enableOCSPCheck=true|false"如果您要更新自定义域的现有域配置,则启用 OCSP 服务器绑定的命令可能如下所示:
aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3\ --server-certificate-config "enableOCSPCheck=true|false"
有关更多信息,请参阅《Amazon IoT API 参考》中的 CreateDomainConfiguration 和 UpdateDomainConfiguration。
在 Amazon IoT Core 中为私有端点配置服务器证书 OCSP
私有端点的 OCSP 允许您在 Amazon Virtual Private Cloud(Amazon VPC)中使用私有 OCSP 资源进行 Amazon IoT Core 操作。该过程涉及设置一个充当 OCSP 响应者的 Lambda 函数。Lambda 函数可能使用您的私有 OCSP 资源来制作 Amazon IoT Core 将使用的 OCSP 响应。
Lambda 函数
在为私有端点配置服务器 OCSP 之前,创建一个 Lambda 函数,该函数充当符合 Request for Comments(RFC)6960 的 Online Certificate Status Protocol(OCSP)响应者,支持基本 OCSP 响应。Lambda 函数接受 Distinguished Encoding Rules(DER)格式的 OCSP 请求的 base64 编码。Lambda 函数的响应也是 DER 格式的 base64 编码的 OCSP 响应。响应大小不得超过 4 千字节 (KiB)。Lambda 函数必须与域配置在相同的 Amazon Web Services 账户 和 Amazon Web Services 区域 中。以下是示例 Lambda 函数。
Lambda 函数示例
授权 Amazon IoT 调用您的 Lambda 函数
在使用 Lambda OCSP 响应者创建域配置的过程中,您必须在函数创建后授予 Amazon IoT 调用 Lambda 函数的权限。要授予权限,您可以使用 add-permission CLI 命令。
使用 Amazon CLI 将权限授予您的 Lambda 函数
-
插入您的值后,输入以下命令。请注意,
statement-id值必须唯一。将替换为您的确切值,否则,可能会出现Id-1234ResourceConflictException错误。aws lambda add-permission \ --function-name "ocsp-function" \ --principal "iot.amazonaws.com" \ --action "lambda:InvokeFunction" \ --statement-id "Id-1234" \ --source-arnarn:aws:iot:us-east-1:123456789012:domainconfiguration/<domain-config-name>/*--source-account123456789012IoT 域配置 ARN 将遵循以下模式。服务生成的后缀在创建时间之前未知,因此您必须用
*替换后缀。一旦域配置创建完成且确切的 ARN 已知,您可以更新权限。arn:aws:iot:use-east-1:123456789012:domainconfiguration/domain-config-name/service-generated-suffix -
如果命令成功,则返回一个权限语句,如本示例。您可以继续下一节以为私有端点配置 OCSP 绑定。
{ "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:ocsp-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:iot:us-east-1:123456789012:domainconfiguration/domain-config-name/*\"}}}" }如果命令不成功,则返回错误,如本示例。在继续操作之前,您需要查看并更正错误。
An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer mission on resource: arn:aws:lambda:us-east-1:123456789012:function:ocsp-function
为私有端点配置服务器 OCSP 绑定
要使用 Amazon IoT 控制台配置服务器证书 OCSP 绑定,请执行以下操作:
从导航菜单中,选择 设置,然后选择创建域配置,或为自定义域选择现有域配置。
如果您在上一步中选择创建新的域配置,您将看到创建域配置页面。在域配置属性部分中,选择自定义域。输入创建域配置的信息。
如果您选择更新自定义域的现有域配置,您将看到域配置详细信息页面。选择编辑。
要启用 OCSP 服务器绑定,请在服务器证书配置小节中选择启用服务器证书 OCSP 绑定。
-
选择创建域配置或更新域配置。
要使用 Amazon CLI 配置服务器证书 OCSP 绑定,请执行以下操作:
如果您为自定义域创建新域配置,用于为私有端点配置服务器证书 OCSP 的命令可能如下所示:
aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3\ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"如果您更新自定义域的现有域配置,用于为私有端点配置服务器证书 OCSP 的命令可能如下所示:
aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3\ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"
- enableOCSPCheck
-
这是一个布尔值,指示是否启用了服务器 OCSP 绑定检查。要启用服务器证书 OCSP 绑定,此值必须为 true。
- ocspAuthorizedResponderArn
-
这是存储在 Amazon Certificate Manager(ACM)中的 X.509 证书的 Amazon 资源名称(ARN)的字符串值。如果提供,Amazon IoT Core 将使用此证书验证收到的 OCSP 响应的签名。如果未提供,Amazon IoT Core 将使用颁发证书验证响应。证书必须与域配置在相同的 Amazon Web Services 账户 和 Amazon Web Services 区域 中。有关如何注册授权响应者证书的更多信息,请参阅将证书导入 Amazon Certificate Manager。
- ocspLambdaArn
-
这是一个 Lambda 函数的 Amazon 资源名称(ARN)的字符串值,该函数充当符合 Request for Comments(RFC)6960 的(OCSP)响应者,支持基本 OCSP 响应。Lambda 函数接受使用 DER 格式编码的 OCSP 请求的 base64 编码。Lambda 函数的响应也是 DER 格式的 base64 编码的 OCSP 响应。响应大小不得超过 4 千字节 (KiB)。Lambda 函数必须与域配置在相同的 Amazon Web Services 账户 和 Amazon Web Services 区域 中。
有关更多信息,请参阅《Amazon IoT API 参考》中的 CreateDomainConfiguration 和 UpdateDomainConfiguration。
在 Amazon IoT Core 中使用服务器证书 OCSP 绑定的重要注意事项
在 Amazon IoT Core 中使用服务器证书 OCSP 绑定时,请注意以下事项:
-
Amazon IoT Core 仅支持那些可通过公有 IPv4 地址访问的 OCSP 响应程序。
-
Amazon IoT Core 中的 OCSP 绑定特征不支持授权的响应程序。所有 OCSP 响应都必须由签署证书的 CA 签名,并且 CA 必须是自定义域证书链的一部分。
-
Amazon IoT Core 中的 OCSP 绑定特征不支持使用自签名证书创建的自定义域。
-
Amazon IoT Core 每小时调用一次 OCSP 响应程序并缓存响应。如果对响应程序的调用失败,Amazon IoT Core 将绑定最新的有效响应。
-
如果
nextUpdateTime不再有效,则 Amazon IoT Core 将从缓存中删除响应,并且直到下次成功调用 OCSP 响应程序,TLS 握手才会包含 OCSP 响应数据。当缓存的响应在服务器从 OCSP 响应程序获得有效响应之前已过期时,就会发生这种情况。值nextUpdateTime表明 OCSP 响应在此时间之前将一直有效。有关nextUpdateTime的更多信息,请参阅 服务器证书 OCSP 日志条目。 -
有时,Amazon IoT Core 无法收到 OCSP 响应或删除现有的 OCSP 响应,因为该响应已过期。如果发生此类情况,Amazon IoT Core 将继续使用自定义域提供的服务器证书,而不包含 OCSP 响应。
-
OCSP 响应的大小不能超过 4 KiB。
在 Amazon IoT Core 中对服务器证书 OCSP 绑定进行问题排除
Amazon IoT Core 向 CloudWatch 发送 RetrieveOCSPStapleData.Success 指标和 RetrieveOCSPStapleData 日志条目。指标和日志条目有助于检测与检索 OCSP 响应有关的问题。有关更多信息,请参阅 服务器证书 OCSP 绑定指标 和 服务器证书 OCSP 日志条目 。