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