本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要建立已簽署 URL 或已簽署 Cookie,您需要 簽署者。簽署者是您在 CloudFront 中建立的受信任金鑰群組,或是包含 CloudFront 金鑰對 AWS 的帳戶。建議您使用具有已簽署 URL 和已簽署 Cookie 信任的金鑰群組。如需詳細資訊,請參閱 在信任的金鑰群組 (建議) 和 之間進行選擇 AWS 帳戶。
簽署者有兩個用途:
-
一旦您將簽署者新增至您的分佈,CloudFront 就會開始請求檢視器使用已簽署的 URL 或已簽署的 Cookie 來存取您的檔案。
-
當您建立已簽署 URL 或已簽署 Cookie 時,您可以使用簽署者金鑰對中的私有金鑰對 URL 或 Cookie 的一部分進行簽署。當有人請求受限制的檔案時,CloudFront 會將 URL 或 Cookie 中的簽章與未簽署的 URL 或 Cookie 進行比較,以確認檔案未遭竄改。CloudFront 也可以驗證 URL 或 Cookie 是否有效,也就是好比說到期日期時間到期了嗎?
當您指定簽署者時,您也可以透過將簽署者新增至快取行為,以間接指定需要簽署 URL 或簽署 Cookie 的檔案。如果分佈只有一個快取行為,則使用者必須使用已簽署 URL 或已簽署 Cookie 來存取該分佈中的任何檔案。如果您建立多個快取行為,並將簽署者新增到一些快取行為,而非其他快取行為,則可以請求檢視器使用已簽署 URL 或已簽署 Cookie 來存取這些物件,而非其他檔案。
若要指定允許建立已簽署 URL 或已簽署 Cookie 的簽署者 (私有金鑰),並將帳戶新增到 CloudFront 分佈中,請執行以下任務:
-
決定是否使用信任的金鑰群組或 AWS 帳戶 做為簽署者。建議您使用信任的金鑰群組。如需詳細資訊,請參閱 在信任的金鑰群組 (建議) 和 之間進行選擇 AWS 帳戶。
-
針對您在步驟 1 中選擇的簽署者,建立公有-私有金鑰對。如需詳細資訊,請參閱 為您的簽署者建立金鑰對。
-
如果您使用 .NET 或 Java 建立已簽署 URL 或已簽署 Cookie,請重新格式化私有金鑰。如需詳細資訊,請參閱 重新格式化私有金鑰 (僅限 .NET 和 Java)。
-
在您要為其建立已簽署 URL 或已簽署 Cookie 的分佈中,指定簽署者。如需詳細資訊,請參閱將簽署者新增至分佈。
在信任的金鑰群組 (建議) 和 之間進行選擇 AWS 帳戶
若要使用已簽署 URL 或已簽署 Cookie,您需要 簽署者。簽署者是您在 CloudFront 中建立的受信任金鑰群組,或包含 CloudFront 金鑰對的 AWS 帳戶 。基於下列原因,建議您使用信任的金鑰群組:
-
使用 CloudFront 金鑰群組時,您不需要使用 AWS 帳戶根使用者來管理 CloudFront 簽章 URLs和簽章 Cookie 的公有金鑰。 AWS 最佳實務建議您不必使用根使用者。
-
透過 CloudFront 金鑰群組,您可以使用 CloudFront API 管理公有金鑰、金鑰群組和受信任的簽署者。您可以使用 API 自動化金鑰建立和金鑰輪換。當您使用 AWS 根使用者時,您必須使用 AWS Management Console 來管理 CloudFront 金鑰對,因此您無法自動化程序。
-
由於您可以使用 CloudFront API 管理金鑰群組,因此您也可以使用 AWS Identity and Access Management (IAM) 許可原則來限制不同使用者可執行的動作。例如,您可以允許使用者上傳公有金鑰,但不能刪除公有金鑰。或者,您可以允許使用者刪除公有金鑰,但只有在符合特定條件時,例如使用多因素驗證、從特定網路傳送請求,或是在特定日期和時間範圍內傳送請求。
-
透過 CloudFront 金鑰群組,您可以將較多數目的公有金鑰與您的 CloudFront 分佈產生關聯,讓您在使用和管理公有金鑰方面擁有更大的彈性。根據預設,您最多可以將四個金鑰群組與單一分佈產生關聯,而且一個金鑰群組中最多可以有五個公有金鑰。
當您使用 AWS 帳戶根使用者管理 CloudFront 金鑰對時,每個 AWS 帳戶最多只能有兩個作用中的 CloudFront 金鑰對。
為您的簽署者建立金鑰對
您用來建立 CloudFront 已簽署 URL 或已簽署 Cookie 的每個簽署者都必須具有公有-私有金鑰對。簽署者使用其私有金鑰來簽署 URL 或 Cookie,並且 CloudFront 會使用公有金鑰來驗證簽章。
建立金鑰對的方式視您使用信任的金鑰群組做為簽署者 (建議使用) 或是 CloudFront 金鑰對而定。如需詳細資訊,請參閱下列區段。您建立的金鑰對必須符合下列需求:
-
它必須是一個 SSH-2 RSA 金鑰對。
-
它必須是 base64 編碼的 PEM 格式。
-
它必須是 2048 位元金鑰對。
為了協助保護應用程式的安全,建議您定期輪換金鑰對。如需詳細資訊,請參閱 輪換金鑰對。
為信任的金鑰群組建立金鑰對 (建議使用)
若要為信任的金鑰群組建立金鑰對,請執行下列步驟:
-
建立公有-私有金鑰對。
-
將公有金鑰上傳至 CloudFront 。
-
將公有金鑰新增至 CloudFront 金鑰群組。
如需詳細資訊,請參閱下列程序。
建立一組金鑰對
注意
下列步驟會使用 OpenSSL 做為建立金鑰對的一種方式來示範。還有許多其他方法可以建立 RSA 金鑰對。
-
下列範例命令會使用 OpenSSL 產生長度為 2048 位元的 RSA 金鑰對,並儲存至名為
private_key.pem
的檔案。openssl genrsa -out private_key.pem 2048
-
產生的檔案同時包含公有和私有金鑰。下列範例命令會從名為
private_key.pem
的檔案擷取公有金鑰。openssl rsa -pubout -in private_key.pem -out public_key.pem
您稍後會在下列程序中上傳公有金鑰 (在
public_key.pem
檔案中)。
將公有金鑰上傳至 CloudFront
登入 AWS Management Console ,並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home
。 -
在導覽功能表中,選擇公有金鑰。
-
選擇建立公有金鑰。
-
在建立公有金鑰視窗中,執行下列動作:
-
在金鑰名稱中,輸入識別公有金鑰的名稱。
-
對於 Key value (鍵值),貼上公有金鑰。如果您遵循上述程序中的步驟,則公有金鑰位於名為
public_key.pem
的檔案中。若要複製並貼上公有金鑰的內容,您可以:-
在 macOS 或 Linux cat 命令列上使用這個命令,如下所示:
cat public_key.pem
複製該命令的輸出,然後將其貼 Key value (鍵值) 欄位中。
-
使用像「記事本」(在 Windows 上) 或「文字編輯」(在 macOS 上) 等純文字編輯器開啟
public_key.pem
檔案。複製檔案內容,然後將其貼到 Key value (鍵值) 欄位中。
-
-
(選用) 對於註解,請新增註解以描述公有金鑰。
完成時,請選擇新增。
-
-
記錄公有金鑰 ID。您稍後在建立已簽署 URL 或已簽署 Cookie 時使用它,以做為
Key-Pair-Id
欄位的值。
將公有金鑰新增至金鑰群組
在 https://console.aws.amazon.com/cloudfront/v4/home
中開啟 CloudFront 主控台。 -
在導覽功能表中,選擇金鑰群組。
-
選擇新增金鑰群組。
-
在建立金鑰群組頁面上,執行下列動作:
-
在金鑰群組名稱中,輸入識別金鑰群組的名稱。
-
(選用) 在註解中,輸入註解以描述金鑰群組。
-
在公有金鑰中,選取要新增至金鑰群組的公有金鑰,然後選擇新增。針對您要新增至金鑰群組的每個公有金鑰重複此步驟。
-
-
選擇建立金鑰對。
-
記錄金鑰群組名稱。稍後您可以使用它來將金鑰群組與 CloudFront 分佈中的快取行為產生關聯。(在 CloudFront API 中,您可以使用金鑰群組 ID,將金鑰群組與快取行為產生關聯。)
重要
建議您建立信任金鑰群組的公有金鑰,而不是遵循下列步驟。如需建立已簽署 URL 和已簽署 Cookie 之公有金鑰的建議方式,請參閱為信任的金鑰群組建立金鑰對 (建議使用)。
您可以使用下列方式建立 CloudFront 金鑰對:
-
在 中建立金鑰對, AWS Management Console 並下載私有金鑰。請參見下列步驟:
-
使用諸如 OpenSSL 的應用程式建立 RSA 金鑰對,並將公有金鑰上傳到 AWS Management Console。如需有關建立 RSA 金鑰對的詳細資訊,請參閱 為信任的金鑰群組建立金鑰對 (建議使用)。
在 中建立 CloudFront 金鑰對 AWS Management Console
-
AWS Management Console 使用帳戶根使用者的登入資料 AWS 登入 。
重要
IAM 使用者無法建立 CloudFront 金鑰對。您必須使用根使用者登入資料登入,才能建立金鑰對。
-
選擇您的帳戶名稱,然後選擇我的安全登入資料。
-
選擇 CloudFront 金鑰對。
-
確認您沒有多個作用中的金鑰對。如果您已經有兩個使用中的金鑰對,則無法建立金鑰對。
-
選擇建立新的金鑰對。
注意
您也可以選擇建立自己的金鑰對並上傳公有金鑰。CloudFront 金鑰對支援 1024、2048 或 4096 位元金鑰。
-
在建立金鑰對的對話方塊中,選擇下載私有金鑰檔案,然後將檔案儲存在電腦上。
重要
在安全的位置儲存 CloudFront 金鑰對的私有金鑰,並設定該檔案的許可,以便只有所需的管理員可以讀取該金鑰。如果有人取得您的私有金鑰,他們可以產生有效已簽章的 URL 和已簽章的 Cookie 並下載您的內容。您不能再次取得私有金鑰,因此如果您遺失或刪除它,則必須建立新的 CloudFront 金鑰對。
-
記錄您的金鑰對的金鑰對 ID。(在 中 AWS Management Console,這稱為存取金鑰 ID。) 您將在建立已簽署 URL 或已簽署 Cookie 時使用它。
重新格式化私有金鑰 (僅限 .NET 和 Java)
如果您正使用 .NET 或 Java 以建立已簽署 URL 或已簽署 Cookie,則無法在預設 PEM 格式中,使用金鑰對的私有金鑰來建立簽章。相反地,請執行下列動作:
-
.NET 框架 – 將私有金鑰轉換為 .NET 框架使用的 XML 格式。有幾種工具可用。
-
Java – 將私有金鑰轉換為 DER 格式。執行此操作的一種方法是使用以下 OpenSSL 命令。在下列命令中,
private_key.pem
是包含 PEM 格式化的私有金鑰的檔案名稱,而且private_key.der
是執行命令之後包含 DER 格式化的私有金鑰的檔案名稱。openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out
private_key.der
-outform DER為了確保編碼器能正確運作,請將 Bouncy Castle Java 的密碼編譯 API 的 JAR 新增到專案中,然後再新增 Bouncy Castle 供應商。
將簽署者新增至分佈
簽署者是信任的金鑰群組 (建議使用) 或 CloudFront 金鑰對,可為分佈建立已簽署 URL 和已簽署 Cookie。若要在 CloudFront 分佈中使用已簽署 URL 或已簽署 Cookie,您必須指定簽署者。
簽署者與快取行為相關聯。在某些物件或不用於相同分佈之其他檔案下,這允許您要求簽章 URL 或簽章 Cookie。只有和對應快取行為相關聯的檔案,分佈才會要求已簽署的 URL 或 Cookie。
同樣地,簽署者只能為與對應快取行為相關聯的檔案簽署 URL 或 Cookie。例如,如果您有一個快取行為下的簽署者和不同快取行為下的不同簽署者,則這兩個簽署者都不能為與其他快取行為的相關檔案建立簽署 URL 或 Cookie。
重要
在您將簽署者新增至分佈之前,請執行下列動作:
-
請仔細定義快取行為中的路徑模式,以及快取行為順序,這樣您就不會讓使用者意外地存取您的內容,也不會讓他們存取您希望所有人都能使用的內容。
例如,假設請求與兩個快取行為的路徑模式相符合。第一個快取行為不需要已簽章的 URL 或已簽章的 Cookie,而第二個快取行為則需要。使用者將能夠在不使用已簽署的 URL 或已簽署的 Cookie 的情況下存取檔案,因為 CloudFront 處理與第一個符合相關聯的快取行為。
如需喲歐冠路徑模式的詳細資訊,請參閱 路徑模式。
-
對於您已經用來分佈內容的分配內容,請在新增簽署者之前,確定您已準備好開始產生已簽署 URL 和已簽署 Cookie。當您新增簽署者時,CloudFront 會拒絕未包含有效的已簽署 URL 或已簽署 Cookie 請求。
您可以使用 CloudFront 主控台或 CloudFront API 會將簽署者新增至您的分佈。
下列步驟說明如何將信任的金鑰群組新增為簽署者。您也可以新增 AWS 帳戶 做為信任的簽署者,但不建議這麼做。
使用主控台將簽署者新增至分佈
-
記錄要用作信任的簽署者之金鑰群組的金鑰群組 ID。如需詳細資訊,請參閱 為信任的金鑰群組建立金鑰對 (建議使用)。
在 https://console.aws.amazon.com/cloudfront/v4/home
中開啟 CloudFront 主控台。 -
使用已簽署 URL 或已簽署 Cookie,選擇要保護其檔案的分佈。
注意
若要將簽署者新增至新的發行套件,您可以指定建立發行套件時步驟 6 所述的相同設定。
-
選擇 Behaviors (動作) 索引標籤。
-
選取快取行為,其路徑模式符合您要使用已簽署 URL 或已簽署 Cookie 保護的檔案,然後選擇編輯。
-
在編輯行為頁面上,執行下列動作:
-
針對限制檢視器存取 (使用已簽署 URL 或已簽署 Cookie),按一下是。
-
針對 Trusted Key Groups or Trusted Signer (信任的金鑰群組或可信簽署者),選擇 Trusted Key Groups (信任的金鑰群組)。
-
在信任的金鑰群組中,選擇要新增的金鑰群組,然後選擇新增。如果您要新增多個金鑰群組,請重複此步驟。
-
-
選擇是,編輯以更新快取行為。
輪換金鑰對
建議您定期輪換 (變更) 已簽署網址和已簽署 Cookie 的金鑰對。若要輪換您用來建立已簽署 URL 或已簽署 Cookie 的金鑰對,而不會使尚未到期的無效 URL 或 Cookie,請執行以下任務:
-
建立新的金鑰對,並將公有金鑰新增至金鑰群組。如需詳細資訊,請參閱 為信任的金鑰群組建立金鑰對 (建議使用)。
-
如果您在上一個步驟中建立了新的金鑰群組,請以簽署者的身分將金鑰群組新增到分佈中。
重要
請勿從金鑰群組中移除任何現有的公有金鑰,或從分佈中移除任何金鑰群組。請僅加入新的。
-
使用新金鑰對中的私有金鑰來更新應用程式以建立簽章。確認已簽署 URL 或使用新私有金鑰簽署的 Cookie 正在運作。
-
等待直到已簽署 URL 或 Cookie 過期,而使用先前的金鑰對。然後從金鑰群組中移除舊的公有金鑰。如果您在步驟 2 中建立新的金鑰群組,請從分佈中移除舊的金鑰群組。