本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
用於堆疊OCSP的伺服器憑證組態
AWS IoT Core 支援伺服器憑證的線上憑證狀態協定 (OCSP)
您可以定期查詢OCSP回應者,在 OCSP 中啟用伺服器憑證堆疊 AWS IoT Core ,以檢查憑證的有效性。OCSP 堆疊設定是建立或更新具有自訂網域的網域組態程序的一部分。 OCSP堆疊會持續檢查伺服器憑證上的撤銷狀態。這有助於驗證連線至自訂網域的用戶端已不再信任 CA 撤銷的任何憑證。如需詳細資訊,請參閱在 OCSP中啟用伺服器憑證 AWS IoT Core。
伺服器憑證OCSP堆疊可提供即時撤銷狀態檢查,減少與檢查撤銷狀態相關的延遲,並改善安全連線的隱私權和可靠性。如需使用OCSP堆疊優點的詳細資訊,請參閱OCSP 相較於用戶端OCSP檢查,使用堆疊的優點。
注意
此功能無法在 中使用 AWS GovCloud (US) Regions。
在本主題中:
什麼是 OCSP?
線上憑證狀態通訊協定 (OCSP) 可協助為 Transport Layer Security (TLS) 交握提供伺服器憑證的撤銷狀態。
重要概念
下列重要概念提供線上憑證狀態通訊協定 () 的詳細資訊OCSP。
OCSP
OCSP
OCSP 回應者
OCSP 回應者 (也稱為OCSP伺服器) 會接收並回應來自用戶端的OCSP請求,這些用戶端會嘗試驗證憑證的撤銷狀態。
用戶端 OCSP
在用戶端 中OCSP,用戶端會使用 OCSP聯絡OCSP回應者,在交TLS握期間檢查憑證的撤銷狀態。
伺服器端 OCSP
在伺服器端 OCSP OCSP(也稱為堆疊) 中,伺服器會啟用 (而不是用戶端) 以向OCSP回應者提出請求。伺服器會將對憑證的OCSP回應釘在一起,並在交TLS握期間將其傳回給用戶端。
OCSP 圖表
下圖說明用戶端OCSP和伺服器端的運作方式OCSP。
用戶端 OCSP
用戶端會
ClientHello
傳送訊息,以啟動與伺服器的TLS交握。伺服器會收到訊息,並以
ServerHello
訊息回應。伺服器也會將伺服器憑證傳送至用戶端。用戶端會驗證伺服器憑證,並從OCSPURI中擷取 。
用戶端會傳送憑證撤銷檢查請求給OCSP回應者。
OCSP 回應者傳送OCSP回應。
用戶端會從OCSP回應驗證憑證狀態。
TLS 交握已完成。
伺服器端 OCSP
-
用戶端會
ClientHello
傳送訊息,以啟動與伺服器的TLS交握。 伺服器會收到訊息並取得最新的快取OCSP回應。如果快取的回應遺失或過期,伺服器會呼叫OCSP回應者以取得憑證狀態。
OCSP 回應者傳送OCSP回應至伺服器。
伺服器傳送訊息
ServerHello
。伺服器也會將伺服器憑證和憑證狀態傳送至用戶端。用戶端會驗證OCSP憑證狀態。
TLS 交握已完成。
OCSP 堆疊的運作方式
OCSP 在用戶端和伺服器之間的TLS交握期間,會使用 stapling 來檢查伺服器憑證撤銷狀態。伺服器向OCSP回應者發出OCSP請求,並將傳回用戶端的憑證OCSP回應釘選為必要。讓伺服器向OCSP回應者發出請求,即可快取回應,然後針對許多用戶端多次使用回應。
堆疊在 OCSP 中的運作方式 AWS IoT Core
下圖顯示伺服器端OCSP堆疊如何在 中運作 AWS IoT Core。
-
裝置需要向啟用OCSP堆疊的自訂網域註冊。
-
AWS IoT Core 每小時呼叫OCSP回應者以取得憑證狀態。
-
OCSP 回應者會收到請求、傳送最新的OCSP回應,並存放快取的OCSP回應。
-
裝置會傳送訊息
ClientHello
以啟動TLS交握 AWS IoT Core。 -
AWS 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回應與伺服器憑證連接。
在 OCSP中啟用伺服器憑證 AWS IoT Core
若要啟用伺服器憑證OCSP堆疊 AWS IoT Core,請為自訂網域建立網域組態,或更新現有的自訂網域組態。如需使用自訂網域建立網域組態的一般資訊,請參閱 建立和設定客戶受管網域。
使用以下指示,使用 AWS Management Console 或 啟用OCSP伺服器堆疊 AWS CLI。
若要使用 AWS IoT 主控台啟用伺服器憑證OCSP堆疊:
在導覽功能表中,選擇設定,然後選擇建立網域組態,或選擇自訂網域的現有網域組態。
如果您選擇在上一個步驟中建立新的網域組態,您會看到建立網域組態頁面。在網域組態屬性區段中,選擇自訂網域。輸入資訊以建立網域組態。
如果您選擇更新自訂網域的現有網域組態,您會看到網域組態詳細資訊頁面。選擇編輯。
若要啟用OCSP伺服器堆疊,請在伺服器憑證組態子區段中選擇啟用伺服器憑證OCSP堆疊。
-
選擇建立網域組態或更新網域組態。
若要使用 OCSP 啟用伺服器憑證堆疊 AWS CLI:
如果您為自訂網域建立新的網域組態,啟用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"
如需詳細資訊,請參閱 參考UpdateDomainConfiguration中的 AWS IoT API CreateDomainConfiguration和 。
在 中設定私有端點OCSP的伺服器憑證 AWS IoT Core
OCSP 適用於私有端點可讓您使用 Amazon Virtual Private Cloud (AmazonVPC) 中的私有OCSP資源進行 AWS IoT Core 操作。此程序涉及設定 Lambda 函數做為OCSP回應者。Lambda 函數可能會使用您的私有OCSP資源來製作 AWS IoT Core 將使用的OCSP回應。
Lambda 函數
OCSP 為私有端點設定伺服器之前,請建立 Lambda 函數,做為符合 評論請求 (RFC) 6960 標準的線上憑證狀態通訊協定 (OCSP) 回應程式,以支援基本OCSP回應。Lambda 函數接受以辨別編碼規則 (DER) 格式的 base64 編碼OCSP請求。Lambda 函數的回應也是DER格式為 base64 編碼的OCSP回應。回應大小不得超過 4 KB (KiB)。Lambda 函數必須與網域組態位於相同 AWS 帳戶 和 AWS 區域 。以下是 Lambda 函數的範例。
Lambda 函數範例
授權 AWS IoT 叫用 Lambda 函數
在使用 Lambda OCSP回應程式建立網域組態的過程中,您必須授予 AWS IoT 許可,以在建立函數後叫用 Lambda 函數。若要授予許可,您可以使用 add-permission CLI命令。
使用 將許可授予 Lambda 函數 AWS CLI
-
在插入您的值之後,輸入以下命令。請注意,
statement-id
值必須是唯一的。
以您擁有的確切值取代 ,否則您可能會發生錯誤Id-1234
ResourceConflictException
。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-account123456789012
IoT 網域組態ARNs將遵循下列模式。建立時間之前,不會知道服務產生的尾碼,因此您必須以 取代尾碼
*
。您可以在建立網域組態且確切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堆疊
若要使用 AWS IoT 主控台設定伺服器憑證OCSP堆疊:
從導覽功能表中,選擇設定,然後選擇建立網域組態,或選擇自訂網域的現有網域組態。
如果您選擇在上一個步驟中建立新的網域組態,您會看到建立網域組態頁面。在網域組態屬性區段中,選擇自訂網域。輸入資訊以建立網域組態。
如果您選擇更新自訂網域的現有網域組態,您會看到網域組態詳細資訊頁面。選擇編輯。
若要啟用OCSP伺服器堆疊,請在伺服器憑證組態子區段中選擇啟用伺服器憑證OCSP堆疊。
-
選擇建立網域組態或更新網域組態。
若要使用 OCSP 設定伺服器憑證堆疊 AWS CLI:
如果您為自訂網域建立新的網域組態,設定私有端點的伺服器憑證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
-
這是存放在 (ARN) 中 X.509 憑證的 Amazon Resource Name AWS Certificate Manager (ACM) 字串值。如果提供, AWS IoT Core 將使用此憑證來驗證所收到OCSP回應的簽章。如果未提供, AWS IoT Core 將使用發行憑證來驗證回應。憑證必須與網域組態位於相同 AWS 帳戶 和 AWS 區域 。如需如何註冊授權回應者憑證的詳細資訊,請參閱將憑證匯入 AWS Certificate Manager。
- ocspLambdaArn
-
這是 Lambda 函數的 Amazon Resource Name (ARN) 字串值,可做為符合 (RFC) 6960 標準 (OCSP) 回應程式的請求,支援基本OCSP回應。Lambda 函數接受使用 DER 格式編碼之OCSP請求的 base64 編碼。Lambda 函數的回應也是DER格式為 base64 編碼的OCSP回應。回應大小不得超過 4 KB (KiB)。Lambda 函數必須與網域組態位於相同 AWS 帳戶 和 AWS 區域 。
如需詳細資訊,請參閱 參考UpdateDomainConfiguration中的 AWS IoT API CreateDomainConfiguration和 。
在 OCSP 中使用伺服器憑證堆疊的重要注意事項 AWS IoT Core
當您OCSP在 中使用伺服器憑證時 AWS IoT Core,請記住下列事項:
-
AWS IoT Core 僅支援可透過公有IPv4地址連線的OCSP回應者。
-
中的OCSP堆疊功能 AWS IoT Core 不支援授權的回應程式。所有OCSP回應都必須由簽署憑證的 CA 簽署,而 CA 必須是自訂網域憑證鏈的一部分。
-
中的OCSP堆疊功能 AWS IoT Core 不支援使用自我簽署憑證建立的自訂網域。
-
AWS IoT Core 每小時呼叫OCSP回應者並快取回應。如果對回應者的呼叫失敗, AWS IoT Core 將釘選最新的有效回應。
-
如果
nextUpdateTime
不再有效, AWS IoT Core 將從快取中移除回應,且TLS交握不會包含OCSP回應資料,直到下一次成功呼叫OCSP回應者為止。當快取的回應在伺服器從OCSP回應程式取得有效的回應之前已過期時,就會發生這種情況。的值nextUpdateTime
表示OCSP回應在此之前有效。如需有關nextUpdateTime
的詳細資訊,請參閱 伺服器憑證OCSP日誌項目。 -
有時候, 會 AWS IoT Core 因為回應過期而無法接收OCSP回應或移除現有的OCSP回應。如果發生這類情況, AWS IoT Core 將繼續使用自訂網域提供的伺服器憑證,而不需要OCSP回應。
-
OCSP 回應的大小不能超過 4 KiB。
對 OCSP 中的伺服器憑證堆疊進行故障診斷 AWS IoT Core
AWS IoT Core 會向 發出RetrieveOCSPStapleData.Success
指標和RetrieveOCSPStapleData
日誌項目 CloudWatch。指標和日誌項目可協助偵測與擷取OCSP回應相關的問題。如需詳細資訊,請參閱 伺服器憑證OCSP堆疊指標 和 伺服器憑證OCSP日誌項目。