

# 既定ポリシーを使用して署名付き 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
   ```

   すべての空白 (タブと改行文字を含む) を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。すべての値の型は `String` です。  
**1. *ファイルのベース URL***  
ベース URL は、署名付き URL を使用しなかった場合にファイルへのアクセスに使用する CloudFront URL であり、独自のクエリ文字列パラメータを含みます (ある場合)。前の例で、ベース URL は `https://d111111abcdef8.cloudfront.net/image.jpg` です。ディストリビューション用の URL 形式の詳細については、「[CloudFront でファイルの URL 形式をカスタマイズする](LinkFormat.md)」を参照してください。  
   + 以下の CloudFront URL は、ディストリビューション内のイメージファイルの 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 は、ディストリビューション内のイメージファイルの URL です。どちらも代替ドメイン名を使用します。2 番目にはクエリ文字列が含まれています。

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

     `https://www.example.com/images/image.jpg?color=red`
   + 以下の CloudFront URL は、代替ドメイン名と HTTPS プロトコルを使用するディストリビューション内のイメージファイルの URL です。

     `https://www.example.com/images/image.jpg`  
** 2. `?` **  
`?` は、クエリパラメータがベース URL の後に続くことを示します。クエリパラメータを指定しない場合でも、`?` を含めます。  
以下のクエリパラメータは任意の順序で指定できます。  
**3. *クエリ文字パラメータ (ある場合*`&`**  
(オプション) 独自のクエリ文字列パラメータを入力できます。これを行うには、各パラメータ間にアンパサンド (`&`) を追加します (例: `color=red&size=medium`)。クエリ文字列パラメータは、URL 内に任意の順序で指定できます。  
クエリ文字列パラメータに `Expires`、`Signature`、または `Key-Pair-Id` という名前を付けることはできません。  
** 4.`Expires=`*Unix 時間形式 (秒単位) および協定世界時 (UTC) の日時***  
URL によるファイルへのアクセスの許可を停止する日付と時刻。  
有効期限切れ日時を Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。例えば、このトピックの冒頭にある例に示すように、2026 年 1 月 1 日午前 10:00 UTC は Unix 時間形式で `1767290400` に変換されます。  
エポック時間を使用するには、`9223372036854775807` (2262 年 4 月 11 日金曜日の 23:47:16.854 UTC) 以前の日付に 64 ビット整数を指定します。  
  
UTC の詳細については、[RFC 3339, Date and Time on the Internet: Timestamps](https://tools.ietf.org/html/rfc3339) を参照してください。  
** 5. `&Signature=`*ハッシュ化および署名されたバージョンのポリシーステートメント***  
ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステートメント。詳細については、「[既定ポリシーを使用する署名付き URL の署名を作成する](#private-content-canned-policy-creating-signature)」を参照してください。  
** 6. `&Key-Pair-Id=`*署名の生成に使用しているプライベートキーに対応する CloudFront パブリックキーのパブリックキー ID***  
CloudFront パブリックキーの ID (`K2JCJMDEHXQW5F` など)。パブリックキー ID は、署名付き URL の検証に使用するパブリックキーを CloudFront に通知します。CloudFront は、署名内の情報をポリシーステートメント内の情報と比較して、URL が改ざんされていないことを確認します。  
このパブリックキーは、ディストリビューションの信頼された署名者であるキーグループに属している必要があります。詳細については、「[署名付き URL と署名付き Cookie を作成できる署名者を指定する](private-content-trusted-signers.md)」を参照してください。

## 既定ポリシーを使用する署名付き 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` の値は 1 つだけ指定できます。
クエリ文字列 (ある場合) が含まれるベース URL。ただし、CloudFront の `Expires`、`Signature`、および `Key-Pair-Id` パラメータが除外されます。次に例を示します。  
`https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes`  
次の点に注意してください。  
+ **プロトコル** – 値は `http://` または `https://` で始まっている必要があります。
+ **クエリ文字列パラメータ** – クエリ文字列パラメータがない場合は、疑問符を省略します。
+ **代替ドメイン名** – URL で代替ドメイン名 (CNAME) を指定する場合は、ウェブページまたはアプリケーション内のファイルを参照するときに代替ドメイン名を指定する必要があります。オブジェクトの Amazon S3 URL を指定しないでください。

**DateLessThan**  
URL の有効期限切れ日時。Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。例えば、UTC の 2026 年 1 月 1 日午前 10 時 00 分は、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)」で作成したポリシーステートメントをハッシュ化して署名します。

ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例については、以下の各資料を参照してください。
+ [Linux コマンドおよび OpenSSL を使用した Base64 エンコードおよび暗号化](private-content-linux-openssl.md)
+ [署名付き URL の署名を作成するためのコード例](PrivateCFSignatureCodeAndExamples.md)<a name="private-content-canned-policy-creating-signature-download-procedure"></a>

**オプション 1: 既定ポリシーを使用して署名を作成するには**

1. 「[既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには](#private-content-canned-policy-creating-policy-statement-procedure)」の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数と生成した RSA または ECDSA プライベートキーを使用してハッシュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。

   ハッシュ関数に必要なプライベートキーには、対応するパブリックキーがディストリビューション内のアクティブな信頼されたキーグループにあるものを使用してください。
**注記**  
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語およびプラットフォームによって異なります。サンプルコードについては、「[署名付き URL の署名を作成するためのコード例](PrivateCFSignatureCodeAndExamples.md)」を参照してください。

1. ハッシュ化および署名された文字列から、空白 (タブや改行文字を含む) を削除します。

1. MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細については、*RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies* の [Section 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/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-canned-policy.html)

1. 結果の値を署名付き URL の `&Signature=` の後に付加し、「[既定ポリシーを使用して署名付き URL を作成するには](#private-content-creating-signed-url-canned-policy-procedure)」に戻って、署名付き URL の各パートの連結を終了します。