

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

# 使用標準政策建立已簽署 URL
<a name="private-content-creating-signed-url-canned-policy"></a>

若要使用標準政策建立已簽署 URL，請完成以下步驟。<a name="private-content-creating-signed-url-canned-policy-procedure"></a>

**使用標準政策建立簽章的 URL**

1. 如果您使用 .NET 或 Java 建立簽章的 URL，並且您還沒有將金鑰對的私有金鑰從預設的 .pem 格式重新格式化為與 .NET 或 Java 相容的格式，則現在執行此操作。如需詳細資訊，請參閱[重新格式化私有金鑰 (僅限 .NET 和 Java)](private-content-trusted-signers.md#private-content-reformatting-private-key)。

1. 串連下列值。您可以在此已簽署 URL 範例中使用格式。

   ```
   https://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium&Expires=1767290400&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6&Key-Pair-Id=K2JCJMDEHXQW5F&Hash-Algorithm=SHA256
   ```

   移除所有空格 (包括標籤和換行字元)。您可能必須在應用程式的程式碼的字串中包含逸出字元。所有值都有一個 `String` 類型。  
**1. *檔案的基本 URL***  
如果您未使用簽署的 URL，包括您自我的查詢字串參數 (如果有)，則基本 URL 是您用來存取檔案的 CloudFront URL。在上述範例中，基本 URL 為 `https://d111111abcdef8.cloudfront.net/image.jpg`。如需有關分佈的 URL 格式的詳細資訊，請參閱 [自訂 CloudFront 中檔案的 URL 格式](LinkFormat.md)。  
   + 下列 CloudFront URL 適用於分佈中的映像檔案 (使用 CloudFront 網域名稱)。請注意，`image.jpg` 位於 `images` 目錄中。在 URL 中檔案的路徑必須與 HTTP 伺服器或 Amazon S3 儲存貯體中的檔案的路徑相符。

     `https://d111111abcdef8.cloudfront.net/images/image.jpg`
   + 下列 CloudFront URL 包含查詢字串：

     `https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large`
   + 下列 CloudFront URL 適用於分佈中的圖片檔案。同時使用替代網域名稱。第二個包含查詢字串：

     `https://www.example.com/images/image.jpg`

     `https://www.example.com/images/image.jpg?color=red`
   + 以下 CloudFront URL 用於分佈中使用備用網域名稱和 HTTPS 通訊協定的圖片檔案：

     `https://www.example.com/images/image.jpg`  
** 2. `?` **  
`?` 代表基本 URL 後面所接的查詢字串參數。即使您未指定任何查詢參數，也請包含 `?`。  
您可以依任何順序指定下列查詢參數。  
**3. *您的查詢字串參數 (如果有的話)*`&`**  
(選用) 您可以輸入自己的查詢字串參數。若要這樣做，請在每個參數之間新增 and (`&`)，例如 `color=red&size=medium`。您可以在 URL 內以任何順序指定查詢字串參數。  
您的查詢字串參數無法命名為 `Expires`、`Key-Pair-Id`、 `Signature`或 `Hash-Algorithm`。  
** 4. `Expires=`*Unix 時間格式的日期和時間 (以秒為單位) 和國際標準時間 (UTC)***  
您希望 URL 停止允許存取檔案的日期和時間。  
以 Unix 時間格式 (以秒為單位) 和國際標準時間 (UTC) 指定過期日期和時間。例如，2026 年 1 月 1 日上午 10:00 UTC 會以 Unix 時間格式轉換為 `1767290400`，如本主題開頭的範例所示。  
若要使用 epoch 時間，請為不晚於 `9223372036854775807` 的日期指定 64 位元整數 (2262 年 4 月 11 日星期五 23:47:16.854 UTC)。  
  
如需世界協調時間的詳細資訊，請參閱 [RFC 3339、網際網路上的日期和時間：時間戳記](https://tools.ietf.org/html/rfc3339)。  
** 5. `&Signature=`*政策陳述式的雜湊和簽署版本***  
JSON 政策聲明的雜湊、簽章和 base64-encoded 版本。如需詳細資訊，請參閱[為使用標準政策的已簽署 URL 建立簽章](#private-content-canned-policy-creating-signature)。  
** 6. `&Key-Pair-Id=`*CloudFront 公有金鑰的公有金鑰 ID，您用來產生簽章的對應私有金鑰***  
CloudFront 公有金鑰的 ID，例如 `K2JCJMDEHXQW5F`。公有金鑰 ID 會告訴 CloudFront 要使用哪個公有金鑰來驗證已簽署的 URL。CloudFront 將簽章中的資訊與政策聲明中的資訊進行比較，以驗證該 URL 尚未遭到篡改。  
此公有金鑰必須屬於分佈中信任的簽署者金鑰群組。如需詳細資訊，請參閱[指定可以建立已簽署 URL 和已簽署 Cookie 的簽署者](private-content-trusted-signers.md)。  
** 7. `&Hash-Algorithm=`*SHA1 或 SHA256***  
（選用） 用來建立簽章的雜湊演算法。支援的值為 `SHA1` 和 `SHA256`。如果您未指定此參數，CloudFront 會預設為 `SHA1`。

## 為使用標準政策的已簽署 URL 建立簽章
<a name="private-content-canned-policy-creating-signature"></a>

若要為使用標準政策的已簽署 URL 建立簽章，請完成下列程序。

**Topics**
+ [為使用標準政策的已簽署 URL 建立政策陳述式](#private-content-canned-policy-creating-policy-statement)
+ [為使用標準政策的已簽署 URL 建立簽章](#private-content-canned-policy-signing-policy-statement)

### 為使用標準政策的已簽署 URL 建立政策陳述式
<a name="private-content-canned-policy-creating-policy-statement"></a>

當您使用標準政策建立已簽章的 URL 時，`Signature` 參數是政策聲明的雜湊和簽章版本。對於使用標準政策的簽章的 URL，您不會將政策聲明包括在 URL 中，就像您使用自訂政策的已簽章的 URL 一樣。若要建立政策聲明，請執行下列程序。<a name="private-content-canned-policy-creating-policy-statement-procedure"></a>

**為使用標準政策的已簽章的 URL 建立政策聲明**

1. 建構政策聲明，使用下列 JSON 格式，並使用 UTF-8 字元編碼。完全按照規定包含所有標點符號和其他常值。如需有關 `Resource` 和 `DateLessThan` 參數的詳細資訊，請參閱 [您在使用標準政策的已簽署 URL 的政策陳述式中指定的值](#private-content-canned-policy-statement-values)。

   ```
   {
       "Statement": [
           {
               "Resource": "base URL or stream name",
               "Condition": {
                   "DateLessThan": {
                       "AWS:EpochTime": ending date and time in Unix time format and UTC
                   }
               }
           }
       ]
   }
   ```

1. 從政策陳述式中刪除所有空格 (包括標籤和新行字元)。您可能必須在應用程式的程式碼的字串中包含逸出字元。

#### 您在使用標準政策的已簽署 URL 的政策陳述式中指定的值
<a name="private-content-canned-policy-statement-values"></a>

當您為標準政策建立政策聲明時，您可以指定以下值。

**資源**  
您只能為 `Resource` 指定一個值。
包含查詢字串的基本 URL，如果有的話，但不包括 CloudFront `Expires`、`Key-Pair-Id`、 `Signature`和 `Hash-Algorithm` 參數，例如：  
`https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes`  
注意下列事項：  
+ **通訊協定** – 此值必須以 `http://` 或 `https://` 開頭。
+ **查詢字串參數** – 如果沒有查詢字串參數，請省略問號。
+ **替代網域名稱** – 如果在 URL 中指定了替代網域名稱 (CNAME)，則在引用網頁或應用程式中的檔案時，必須指定替代網域名稱。請勿為物件指定 Amazon S3 URL。

**DateLessThan**  
Unix 時間格式 (以秒為單位) 和國際標準時間 (UTC) 的 URL 的到期日期和時間。例如，2026 年 1 月 1 日上午 10:00 UTC 以 Unix 時間格式轉換為 1767290400。  
此值必須與已簽章的 URL 中的 `Expires` 查詢字串參數的值相符。不要將值括在引號中。  
如需詳細資訊，請參閱 [CloudFront 何時檢查已簽署 URL 中的到期日期和時間](private-content-signed-urls.md#private-content-check-expiration)。

#### 使用標準政策的已簽署 URL 範例政策陳述式
<a name="private-content-canned-policy-creating-policy-statement-example"></a>

當您在已簽署 URL 中使用以下範例政策陳述式時，使用者在到 UTC 2026 年 1 月 1 日上午 10:00 之前可以存取檔案 `https://d111111abcdef8.cloudfront.net/horizon.jpg`：

```
{
    "Statement": [
        {
            "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes",
            "Condition": {
                "DateLessThan": {
                    "AWS:EpochTime": 1767290400
                }
            }
        }
    ]
}
```

### 為使用標準政策的已簽署 URL 建立簽章
<a name="private-content-canned-policy-signing-policy-statement"></a>

若要在已簽章的 URL 中建立 `Signature` 參數的值，請對您在 [為使用標準政策的已簽署 URL 建立政策陳述式](#private-content-canned-policy-creating-policy-statement) 中建立的政策聲明進行雜湊和簽署。

如需有關如何對政策聲明進行雜湊、簽章和編碼的詳細資訊和範例，請參閱：
+ [用於 Base64 編碼和加密的 Linux 命令和 OpenSSL](private-content-linux-openssl.md)
+ [為已簽署 URL 建立簽章的程式碼範例](PrivateCFSignatureCodeAndExamples.md)

**注意**  
連結的範例預設使用 SHA-1。若要改為使用 SHA-256，請在 OpenSSL 命令`sha256`中將 取代`sha1`為 ，並在簽章的 URL 中包含`Hash-Algorithm=SHA256`查詢參數。<a name="private-content-canned-policy-creating-signature-download-procedure"></a>

**選項 1：使用標準政策建立簽章**

1. 使用 SHA-1 或 SHA-256 雜湊函數和產生的 RSA 或 ECDSA 私有金鑰來雜湊並簽署您在程序 中建立的政策陳述式[為使用標準政策的已簽章的 URL 建立政策聲明](#private-content-canned-policy-creating-policy-statement-procedure)。使用不再包含空格之政策陳述式的版本。

   如果您使用 SHA-256，則必須在簽章的 URL `&Hash-Algorithm=SHA256`中包含 。

   對於雜湊函數所需的私有金鑰，使用其公有金鑰在活動的信任金鑰組中的私有金鑰進行分佈。
**注意**  
用於雜湊和簽名政策聲明的方法取決於您的程式設計語言和平台。如需程式碼範例，請參閱 [為已簽署 URL 建立簽章的程式碼範例](PrivateCFSignatureCodeAndExamples.md)。

1. 從雜湊和已簽署字串中移除所有空格 (包括索引標籤和新行字元)。

1. 使用 MIME base64 編碼的 Base64-encode 字串。如需詳細資訊，請參閱 *RFC 2045，MIME (多用途網際網路郵件延伸) 第一部分：網際網路訊息內文的格式*中的[第 6.8 節：Base64 Content-Transfer-Encoding](https://tools.ietf.org/html/rfc2045#section-6.8)。

1. 將 URL 查詢字串中無效的字元替換為有效的字元。下表列出無效和有效的字元。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-canned-policy.html)

1. 在 `&Signature=` 之後，將結果值附加到已簽章的 URL，然後返回到[使用標準政策建立簽章的 URL](#private-content-creating-signed-url-canned-policy-procedure)以完成已簽章的 URL 的各個部分的連接。