

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tetapkan cookie yang ditandatangani menggunakan kebijakan kalengan
<a name="private-content-setting-signed-cookie-canned-policy"></a>

Untuk mengatur cookie bertanda tangan dengan menggunakan kebijakan terekam, selesaikan langkah berikut. Untuk membuat tanda tangan, lihat [Membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan](#private-content-canned-policy-signature-cookies).<a name="private-content-setting-signed-cookie-canned-policy-procedure"></a>

**Untuk mengatur cookie bertanda tangan menggunakan kebijakan terekam**

1. Jika Anda menggunakan .NET atau Java untuk membuat cookie yang telah ditandatangani, dan jika Anda belum memformat ulang kunci pribadi untuk pasangan kunci Anda dari format .pem default ke format yang kompatibel dengan .NET atau dengan Java, lakukan sekarang. Untuk informasi selengkapnya, lihat [Memformat ulang kunci pribadi (hanya .NET dan Java)](private-content-trusted-signers.md#private-content-reformatting-private-key).

1. Program aplikasi Anda untuk mengirim tiga `Set-Cookie` header ke pemirsa yang disetujui (atau empat, jika Anda ingin menentukan algoritma hash). Anda perlu tiga `Set-Cookie` karena tiap `Set-Cookie` header hanya dapat berisi satu pasangan dengan nilai nama, dan CloudFront cookie yang ditandatangani memerlukan tiga pasangan nilai. Pasangan nama-nilai adalah: `CloudFront-Expires`, `CloudFront-Signature`, dan `CloudFront-Key-Pair-Id`. Anda dapat secara opsional menyertakan pasangan nama-nilai keempat,`CloudFront-Hash-Algorithm`, untuk menentukan algoritma hash yang digunakan untuk tanda tangan. Nilai harus ada di penampil sebelum pengguna membuat permintaan pertama untuk file yang ingin Anda kontrol akses. 
**catatan**  
Secara umum, kami sarankan Anda tidak memasukkan `Expires` dan `Max-Age` atribut. Kecuali atribut tersebut akan menyebabkan peramban menghapus cookie saat pengguna menutup peramban, yang mengurangi kemungkinan seseorang mendapatkan akses tanpa izin ke konten Anda. Untuk informasi selengkapnya, lihat [Mencegah penyalahgunaan cookie yang ditandatangani](private-content-signed-cookies.md#private-content-signed-cookie-misuse).

   **Nama atribut cookie peka huruf besar-kecil**. 

   Pemutusan jalur hanya disertakan untuk membuat atribut lebih mudah dibaca.

   ```
   Set-Cookie: 
   CloudFront-Expires={{date and time in Unix time format (in seconds) and Coordinated Universal Time (UTC)}}; 
   Domain={{optional domain name}}; 
   Path=/{{optional directory path}}; 
   Secure; 
   HttpOnly
   
   Set-Cookie: 
   CloudFront-Signature={{hashed and signed version of the policy statement}}; 
   Domain={{optional domain name}}; 
   Path=/{{optional directory path}}; 
   Secure; 
   HttpOnly
   
   Set-Cookie: 
   CloudFront-Key-Pair-Id={{public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature}}; 
   Domain={{optional domain name}}; 
   Path=/{{optional directory path}}; 
   Secure; 
   HttpOnly
   
   Set-Cookie: 
   CloudFront-Hash-Algorithm={{SHA1 or SHA256}}; 
   Domain={{optional domain name}}; 
   Path=/{{optional directory path}}; 
   Secure; 
   HttpOnly
   ```  
**(Opsional) `Domain`**  
Nama domain untuk file yang diminta. Jika Anda tidak menyebutkan `Domain` atribut, nilai default adalah nama domain di URL, dan hanya berlaku untuk nama domain tertentu, bukan subdomain. Jika Anda menentukan `Domain` , ini juga berlaku untuk subdomain. Titik utama pada nama domain (misalnya, `Domain=.example.com`) bersifat opsional. Selain itu, jika Anda menentukan `Domain` , nama domain di URL dan nilai `Domain` atribut harus cocok.  
Anda dapat menentukan nama domain yang CloudFront ditetapkan untuk distribusi Anda, misalnya, d111111abcdef8.cloudfront.net, tetapi Anda tidak dapat menentukan \*.cloudfront.net untuk nama domain.  
Jika Anda ingin menggunakan nama domain alternatif seperti example.com di URLs, Anda harus menambahkan nama domain alternatif ke distribusi Anda terlepas dari apakah Anda menentukan atribut. `Domain` Untuk informasi lebih lanjut, lihat [Nama domain alternatif (CNAMEs)](DownloadDistValuesGeneral.md#DownloadDistValuesCNAME) dalam [Semua referensi pengaturan distribusi](distribution-web-values-specify.md) topik.  
**(Opsional) `Path`**  
Jalur untuk file yang diminta. Jika Anda tidak menyebutkan `Path` atribut, nilai default adalah alur di URL.  
**`Secure`**  
Meminta pemirsa mengenkripsi cookie sebelum mengirim permintaan. Kami menyarankan Anda mengirim `Set-Cookie` header melalui koneksi HTTPS untuk memastikan bahwa atribut cookie dilindungi dari man-in-the-middle serangan.  
**`HttpOnly`**  
Mendefinisikan bagaimana browser (jika didukung) berinteraksi dengan nilai cookie. Dengan`HttpOnly`, nilai cookie tidak dapat diakses JavaScript. Tindakan pencegahan ini dapat membantu mengurangi serangan cross-site scripting (XSS). Untuk informasi selengkapnya, lihat [Menggunakan cookie HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies).  
**`CloudFront-Expires`**  
Tentukan tanggal dan waktu kedaluwarsa dalam format waktu Unix (dalam detik) dan Waktu Universal Terkoordinasi (UTC). Misalnya, 1 Januari 2026 10:00 UTC mengkonversi ke 1767290400 dalam format waktu Unix.   
Untuk menggunakan waktu epoch, tentukan bilangan bulat 64-bit untuk tanggal yang paling lambat `9223372036854775807` (Jumat, 11 April 2262 pukul 23:47:16.854 UTC).  
Untuk informasi tentang UTC, lihat *RFC 3339, Tanggal dan Waktu di Internet: Stempel Waktu*, [https://tools.ietf.org/html/rfc3339](https://tools.ietf.org/html/rfc3339).  
**`CloudFront-Signature`**  
Versi yang di-hash, ditandatangani, dan dikodekan base64 dari pernyataan kebijakan JSON. Untuk informasi selengkapnya, lihat [Membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan](#private-content-canned-policy-signature-cookies).  
**`CloudFront-Key-Pair-Id`**  
ID untuk kunci CloudFront publik, misalnya,`K2JCJMDEHXQW5F`. ID kunci publik memberi tahu kunci publik CloudFront mana yang akan digunakan untuk memvalidasi URL yang ditandatangani. CloudFront membandingkan informasi dalam tanda tangan dengan informasi dalam pernyataan kebijakan untuk memverifikasi bahwa URL belum dirusak.  
Kunci publik ini harus dimiliki oleh kelompok kunci yang merupakan signer tepercaya dalam distribusi. Untuk informasi selengkapnya, lihat [Tentukan penandatangan yang dapat membuat cookie yang ditandatangani URLs dan ditandatangani](private-content-trusted-signers.md).  
**`CloudFront-Hash-Algorithm`**  
(Opsional) Algoritma hash yang digunakan untuk membuat tanda tangan. Nilai yang didukung adalah `SHA1` dan `SHA256`. Jika Anda tidak menyertakan cookie ini, CloudFront defaultnya. `SHA1`

Contoh berikut menunjukkan `Set-Cookie` header untuk satu cookie yang ditandatangani saat Anda menggunakan nama domain yang terkait dengan distribusi Anda di URLs untuk file Anda:

```
Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
```

Contoh berikut menunjukkan `Set-Cookie` header untuk satu cookie yang ditandatangani saat Anda menggunakan nama domain alternatif example.org URLs untuk file Anda:

```
Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=example.org; Path=/images/*; Secure; HttpOnly
```

Jika Anda ingin menggunakan nama domain alternatif seperti example.com di URLs, Anda harus menambahkan nama domain alternatif ke distribusi Anda terlepas dari apakah Anda menentukan atribut. `Domain` Untuk informasi selengkapnya, lihat [Nama domain alternatif (CNAMEs)](DownloadDistValuesGeneral.md#DownloadDistValuesCNAME) dalam topik [Semua referensi pengaturan distribusi](distribution-web-values-specify.md).

## Membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan
<a name="private-content-canned-policy-signature-cookies"></a>

Untuk membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan, selesaikan prosedur berikut.

**Topics**
+ [Membuat pernyataan kebijakan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan](#private-content-canned-policy-statement-cookies)
+ [Menandatangani pernyataan kebijakan untuk membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan](#private-content-canned-policy-cookies-signing-policy-statement)

### Membuat pernyataan kebijakan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan
<a name="private-content-canned-policy-statement-cookies"></a>

Saat Anda mengatur cookie bertanda tangan yang menggunakan kebijakan terekam, `CloudFront-Signature` atribut adalah versi yang di- hashed dan ditandatangani dari pernyataan kebijakan. Untuk cookie bertanda tangan yang menggunakan kebijakan terekam, Anda tidak menyertakan pernyataan kebijakan di `Set-Cookie` seperti yang Anda lakukan untuk cookie bertanda tangan yang menggunakan kebijakan kustom. Untuk membuat pernyataan kebijakan, selesaikan langkah berikut.<a name="private-content-canned-policy-statement-cookies-procedure"></a>

**Untuk membuat pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan terekam**

1. Susun pernyataan kebijakan dengan menggunakan format JSON berikut dan menggunakan pengkodean karakter UTF-8. Sertakan semua tanda baca dan nilai literal lainnya persis seperti yang ditentukan. Untuk informasi tentang `Resource` dan `DateLessThan` parameter, lihat [Nilai yang Anda sebutkan dalam pernyataan kebijakan untuk kebijakan terekam untuk cookie yang ditandatangani](#private-content-canned-policy-statement-cookies-values).

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

1. Hapus semua spasi kosong (termasuk tab dan karakter baris baru) dari pernyataan kebijakan. Anda mungkin harus memasukkan karakter escape dalam string di kode aplikasi.

#### Nilai yang Anda sebutkan dalam pernyataan kebijakan untuk kebijakan terekam untuk cookie yang ditandatangani
<a name="private-content-canned-policy-statement-cookies-values"></a>

Ketika Anda membuat pernyataan kebijakan untuk kebijakan terekam, Anda menentukan nilai-nilai berikut:

**Sumber Daya**  
URL dasar termasuk string pencarian Anda, jika ada, misalnya:  
`https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes`  
Anda hanya dapat menentukan satu nilai untuk `Resource`.  
Perhatikan hal-hal berikut:  
+ **Protokol** – Nilai harus dimulai dengan `http://` atau `https://`.
+ **Parameter string kueri** – Jika Anda tidak memiliki parameter string pencarian, hapus tanda tanya.
+ **Nama domain alternatif** – Jika Anda menentukan nama domain alternatif (CNAME) di URL, Anda harus menentukan nama domain alternatif saat merujuk file di halaman web atau aplikasi Anda. Jangan tentukan URL Amazon S3 untuk file tersebut.

**DateLessThan**  
Tanggal dan waktu kedaluwarsa untuk URL dalam format waktu Unix (dalam detik) dan Waktu Universal Terkoordinasi (UTC). Jangan melampirkan nilai dalam tanda petik.  
Misalnya, 16 Maret 2015 10.00 UTC dikonversi menjadi 1426500000 dalam format waktu Unix.  
Nilai ini harus cocok dengan nilai `CloudFront-Expires` dalam `Set-Cookie` header. Jangan melampirkan nilai dalam tanda petik.  
Untuk informasi selengkapnya, lihat [Saat CloudFront memeriksa tanggal dan waktu kedaluwarsa dalam cookie yang ditandatangani](private-content-signed-cookies.md#private-content-check-expiration-cookie).

#### Contoh pernyataan kebijakan untuk kebijakan terekam
<a name="private-content-canned-policy-cookies-sample-policy-statement"></a>

Saat Anda menggunakan contoh pernyataan kebijakan berikut dalam cookie yang ditandatangani, pengguna dapat mengakses file `https://d111111abcdef8.cloudfront.net/horizon.jpg` hingga 16 Maret 2015 10.00 UTC:

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

### Menandatangani pernyataan kebijakan untuk membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kalengan
<a name="private-content-canned-policy-cookies-signing-policy-statement"></a>

Untuk membuat nilai untuk `CloudFront-Signature` atribut dalam `Set-Cookie` tajuk, Anda memiliki dan menandatangani pernyataan kebijakan yang Anda buat di [Untuk membuat pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan terekam](#private-content-canned-policy-statement-cookies-procedure). 

Untuk informasi tambahan dan contoh cara membuat, menandatangani, dan mengodekan pernyataan kebijakan, lihat topik berikut:
+ [Perintah Linux dan OpenSSL untuk pengkodean dan enkripsi base64](private-content-linux-openssl.md)
+ [Contoh kode untuk membuat tanda tangan untuk URL yang ditandatangani](PrivateCFSignatureCodeAndExamples.md)

**catatan**  
Contoh terkait menggunakan SHA-1 secara default. Untuk menggunakan SHA-256 sebagai gantinya, ganti `sha1` dengan `sha256` perintah OpenSSL dan sertakan cookie dengan `CloudFront-Hash-Algorithm` nilai. `SHA256`<a name="private-content-canned-policy-cookie-creating-signature-procedure"></a>

**Untuk membuat tanda tangan untuk cookie yang ditandatangani menggunakan kebijakan terekam**

1. Gunakan fungsi hash SHA-1 atau SHA-256 dan RSA untuk hash dan tandatangani pernyataan kebijakan yang Anda buat dalam prosedur. [Untuk membuat pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan terekam](#private-content-canned-policy-statement-cookies-procedure) Gunakan versi pernyataan kebijakan yang tidak lagi menyertakan spasi kosong.

   Jika Anda menggunakan SHA-256, Anda harus menyertakan `CloudFront-Hash-Algorithm` cookie dengan nilai. `SHA256`

   Untuk kunci privat yang diperlukan oleh fungsi hash, gunakan kunci pribadi yang kunci publiknya berada dalam grup kunci yang dipercaya aktif untuk distribusi.
**catatan**  
Metode yang Anda gunakan untuk men-emuk dan menandatangani pernyataan kebijakan tergantung pada bahasa pemrograman dan platform Anda. Untuk kode sampel, lihat [Contoh kode untuk membuat tanda tangan untuk URL yang ditandatangani](PrivateCFSignatureCodeAndExamples.md).

1. Hapus spasi kosong (termasuk tab dan karakter baris baru) dari string hash dan ditandatangani.

1. Base64 mengodekan string menggunakan pengodean base64 MIME. Untuk informasi selengkapnya, lihat [Bagian 6.8, Base64 Content-Transfer-Encoding](https://tools.ietf.org/html/rfc2045#section-6.8) di *RFC 2045, MIME (Ekstensi Surat Internet Serbaguna) Bagian Satu:* Format Badan Pesan Internet.

1. Ganti karakter yang tidak valid dalam string kueri URL dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-canned-policy.html)

1. Sertakan nilai yang dihasilkan dalam `Set-Cookie` header untuk `CloudFront-Signature` pasangan yang bernilai. Lalu kembali ke [Untuk mengatur cookie bertanda tangan menggunakan kebijakan terekam](#private-content-setting-signed-cookie-canned-policy-procedure) tambahkan `Set-Cookie` header untuk `CloudFront-Key-Pair-Id`.