指定可以建立已簽署URLs和已簽署 Cookie 的簽署者 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

指定可以建立已簽署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 分發中,請執行以下任務:

  1. 決定要使用受信任的金鑰群組,還是使用 AWS 帳戶 作為簽署者。建議您使用信任的金鑰群組。如需詳細資訊,請參閱 在信任的金鑰群組之間進行選擇 (建議) 和 AWS 帳戶

  2. 針對您在步驟 1 中選擇的簽署者,建立公有-私有金鑰對。如需詳細資訊,請參閱為您的簽署者建立金鑰配對

  3. 如果您使用. NET或 Java 創建簽名URLs或簽名餅乾,重新格式化私鑰。如需詳細資訊,請參閱重新格式化私密金鑰 (. NET和只有 Java)

  4. 在您要建立已簽署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 位元金鑰對。

為了協助保護應用程式的安全,建議您定期輪換金鑰對。如需詳細資訊,請參閱 輪換金鑰對

為信任的金鑰群組建立金鑰對 (建議使用)

若要為信任的金鑰群組建立金鑰對,請執行下列步驟:

  1. 建立公有-私有金鑰對。

  2. 將公開金鑰上傳至 CloudFront。

  3. 將公開金鑰新增至 CloudFront 金鑰群組。

如需詳細資訊,請參閱下列程序。

建立一組金鑰對
注意

以下步驟使用 Open SSL 作為建立 key pair 的一種方法範例。還有許多其他方法可以創建 RSA key pair。

  1. 下列範例命令會使用 Open SSL 來產生長度為 2048 位元的 RSA key pair,並儲存至名為private_key.pem的檔案。

    openssl genrsa -out private_key.pem 2048
  2. 產生的檔案同時包含公有和私有金鑰。下列範例命令會從名為 private_key.pem 的檔案擷取公有金鑰。

    openssl rsa -pubout -in private_key.pem -out public_key.pem

    您稍後會在下列程序中上傳公有金鑰 (在 public_key.pem 檔案中)。

若要將公開金鑰上傳至 CloudFront
  1. 登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 在導覽功能表中,選擇公有金鑰

  3. 選擇 [建立公開金鑰]。

  4. 在「建立公用金鑰」視窗中,執行下列動作:

    1. 金鑰名稱中,輸入識別公有金鑰的名稱。

    2. 對於 Key value (鍵值),貼上公有金鑰。如果您遵循上述程序中的步驟,則公有金鑰位於名為 public_key.pem 的檔案中。若要複製並貼上公有金鑰的內容,您可以:

      • 在 macOS 或 Linux cat 命令列上使用這個命令,如下所示:

        cat public_key.pem

        複製該命令的輸出,然後將其貼 Key value (鍵值) 欄位中。

      • 使用純public_key.pem文字編輯器開啟檔案,例如記事本 (在 Windows 上) 或 TextEdit (在 macOS 上)。複製檔案內容,然後將其貼到 Key value (鍵值) 欄位中。

    3. (選用) 對於註解,請新增註解以描述公有金鑰。

    完成時,請選擇新增

  5. 記錄公有金鑰 ID。您稍後在建立已簽署URLs或簽署的 Cookie 時使用它作為Key-Pair-Id欄位的值。

將公有金鑰新增至金鑰群組
  1. 在開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home

  2. 在導覽功能表中,選擇金鑰群組

  3. 選擇新增金鑰群組

  4. 建立金鑰群組頁面上,執行下列動作:

    1. 金鑰群組名稱中,輸入識別金鑰群組的名稱。

    2. (選用) 在註解中,輸入註解以描述金鑰群組。

    3. 公有金鑰中,選取要新增至金鑰群組的公有金鑰,然後選擇新增。針對您要新增至金鑰群組的每個公有金鑰重複此步驟。

  5. 選擇建立金鑰對

  6. 記錄金鑰群組名稱。稍後您可以使用它來將金鑰群組與 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
  1. 使用 AWS 帳戶根 AWS Management Console 使用者的認證登入。

    重要

    IAM使用者無法建立 CloudFront 金鑰配對。您必須使用根使用者登入資料登入,才能建立金鑰對。

  2. 選擇您的帳戶名稱,然後選擇我的安全登入資料

  3. 選擇CloudFront 金鑰配對

  4. 確認您沒有多個作用中的金鑰對。如果您已經有兩個使用中的金鑰對,則無法建立金鑰對。

  5. 選擇建立新的金鑰對

    注意

    您也可以選擇建立自己的 key pair 並上傳公開金鑰。 CloudFront 金鑰配對支援 1024、2048 位元或 4096 位元金鑰。

  6. 建立金鑰對的對話方塊中,選擇下載私有金鑰檔案,然後將檔案儲存在電腦上。

    重要

    將 key pair 的私密金鑰儲存在安全位置,並設定檔案的權限,以便只有所需的管理員才能讀取該檔案。 CloudFront 如果有人獲得您的私鑰,他們可以生成有效的簽名URLs和簽名 cookie 並下載您的內容。您無法再次取得私密金鑰,因此如果遺失或刪除私密金鑰,您必須建立新的 CloudFront key pair。

  7. 記錄您的金鑰對的金鑰對 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 DER

    JAR為了確保編碼器正常工作,請將充氣城堡 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

Console

下列步驟說明如何將信任的金鑰群組新增為簽署者。您也可以新增 AWS 帳戶 為受信任的簽署者,但不建議這麼做。

使用主控台將簽署者新增至分佈
  1. 記錄要用作信任的簽署者之金鑰群組的金鑰群組 ID。如需詳細資訊,請參閱為信任的金鑰群組建立金鑰對 (建議使用)

  2. 在開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home

  3. 選擇您要使用已簽署URLs或已簽署 Cookie 保護其檔案的分發。

    注意

    若要將簽署者新增至新的發行套件,您可以指定建立發行套件時步驟 6 所述的相同設定。

  4. 選擇 Behaviors (動作) 索引標籤。

  5. 選取路徑模式與您要使用簽署URLs或簽署 Cookie 保護的檔案相符的快取行為,然後選擇 [編輯]。

  6. 編輯行為頁面上,執行下列動作:

    1. 對於限制檢視者存取 (使用已簽署URLs或已簽署的 Cookie),請選擇

    2. 針對 Trusted Key Groups or Trusted Signer (信任的金鑰群組或可信簽署者),選擇 Trusted Key Groups (信任的金鑰群組)。

    3. 信任的金鑰群組中,選擇要新增的金鑰群組,然後選擇新增。如果您要新增多個金鑰群組,請重複此步驟。

  7. 選擇是,編輯以更新快取行為。

API

您可以使用 CloudFront API將受信任的金鑰群組新增為簽署者。您可以將簽署者新增至現有分佈或新分佈。在任一情況下,請在 TrustedKeyGroups 元素中指定值。

您也可以新增 AWS 帳戶 為受信任的簽署者,但不建議這麼做。

請參閱 Amazon CloudFront API 參考資料中的下列主題:

輪換金鑰對

我們建議您定期輪換 (變更) 已簽署URLs和簽署 Cookie 的金鑰配對。若要輪換您用來建立已簽署URLs或已簽署 Cookie 的金鑰配對,而不使其無效URLs或尚未過期的 Cookie,請執行下列工作:

  1. 建立新的金鑰對,並將公有金鑰新增至金鑰群組。如需詳細資訊,請參閱 為信任的金鑰群組建立金鑰對 (建議使用)

  2. 如果您在上一個步驟中建立了新的金鑰群組,請以簽署者的身分將金鑰群組新增到分佈中

    重要

    請勿從金鑰群組中移除任何現有的公有金鑰,或從分佈中移除任何金鑰群組。請僅加入新的。

  3. 使用新金鑰對中的私有金鑰來更新應用程式以建立簽章。確認使用新私密金鑰簽署的已簽署URLs或 Cookie 正常運作。

  4. 等到過期日URLs或使用先前私密金鑰簽署的 Cookie 為止。然後從金鑰群組中移除舊的公有金鑰。如果您在步驟 2 中建立新的金鑰群組,請從分佈中移除舊的金鑰群組。