Membuat tanda tangan URL menggunakan kebijakan kustom - Amazon CloudFront

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

Membuat tanda tangan URL menggunakan kebijakan kustom

Untuk membuat tanda tangan URL menggunakan kebijakan khusus, selesaikan prosedur berikut.

Untuk membuat tanda tangan URL menggunakan kebijakan kustom
  1. Jika Anda menggunakan. NETatau Java untuk membuat ditandatanganiURLs, dan jika Anda belum memformat ulang kunci pribadi untuk key pair Anda dari format.pem default ke format yang kompatibel dengannya. NETatau dengan Java, lakukan sekarang. Untuk informasi selengkapnya, lihat Memformat ulang kunci pribadi (. NETdan Java saja).

  2. Menggabungkan nilai-nilai berikut dalam urutan yang tercantum, mereplikasi format yang ditunjukkan dalam contoh ini ditandatangani: URL

    https://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium&Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6&Key-Pair-Id=K2JCJMDEHXQW5F

    Hapus semua spasi kosong (termasuk tab dan karakter baris baru). Anda mungkin harus memasukkan karakter escape dalam string di kode aplikasi. Semua nilai memiliki tipeString.

    1. Base URL for the file

    Dasarnya URL adalah CloudFront URL yang akan Anda gunakan untuk mengakses file jika Anda tidak menggunakan tanda tanganURLs, termasuk parameter string kueri Anda sendiri, jika ada. Dalam contoh sebelumnya, basisnya URL adalah. https://d111111abcdef8.cloudfront.net/image.jpg Untuk informasi selengkapnya tentang format URLs untuk distribusi, lihatKustomisasi URL format untuk file di CloudFront.

    Contoh berikut menunjukkan nilai yang Anda tentukan untuk distribusi.

    • Berikut CloudFront URL ini adalah untuk file gambar dalam distribusi (menggunakan nama CloudFront domain). Perhatikan bahwa image.jpg dalam images direktori. Jalur ke file di URL harus cocok dengan jalur ke file di HTTP server Anda atau di bucket Amazon S3 Anda.

      https://d111111abcdef8.cloudfront.net/images/image.jpg

    • Berikut ini CloudFront URL termasuk string query:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • Berikut ini CloudFront URLs adalah untuk file gambar dalam distribusi. Keduanya menggunakan nama domain alternatif; yang kedua menyertakan string kueri:

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

      https://www.example.com/images/image.jpg?color=red

    • Berikut CloudFront URL ini adalah untuk file gambar dalam distribusi yang menggunakan nama domain alternatif dan HTTPS protokol:

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

    2. ?

    ?Ini menunjukkan bahwa parameter string kueri mengikuti basisURL. Sertakan ? bahkan jika Anda tidak memiliki parameter string kueri Anda sendiri.

    3. Your query string parameters, if any&

    Nilai ini bersifat opsional. Jika Anda ingin menambahkan parameter string kueri Anda sendiri, misalnya:

    color=red&size=medium

    kemudian tambahkan mereka setelah ? dan sebelum Policy parameter. Dalam keadaan tertentu yang jarang terjadi, Anda mungkin perlu menempatkan parameter string pencarian Anda setelah Key-Pair-Id.

    penting

    Parameter Anda tidak dapat diberi nama Policy, Signature, atau Key-Pair-Id.

    Jika Anda menambahkan parameter Anda sendiri, tambahkan & setelah masing-masing, termasuk yang terakhir.

    4. Policy=base64 encoded version of policy statement

    Pernyataan kebijakan Anda dalam JSON format, dengan spasi kosong dihapus, lalu base64 dikodekan. Untuk informasi selengkapnya, lihat Membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.

    Pernyataan kebijakan mengontrol akses yang diberikan tanda URL tangan kepada pengguna. Ini termasuk file, tanggal kedaluwarsa dan waktu, tanggal dan waktu opsional yang URL menjadi valid, dan alamat IP opsional atau rentang alamat IP yang diizinkan untuk mengakses file. URL

    5. &Signature=hashed and signed version of the policy statement

    Versi pernyataan kebijakan yang di-hash, ditandatangani, dan dikodekan base64. JSON Untuk informasi selengkapnya, lihat Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom.

    6. &Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature

    ID untuk kunci CloudFront publik, misalnya,K2JCJMDEHXQW5F. ID kunci publik memberi tahu kunci publik CloudFront mana yang akan digunakan untuk memvalidasi yang ditandatanganiURL. 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.

Membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom

Selesaikan langkah-langkah berikut untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan khusus.

Misalnya pernyataan kebijakan yang mengontrol akses ke file dalam berbagai cara, lihatContoh pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.

Untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom
  1. Buat pernyataan kebijakan menggunakan JSON format berikut. Ganti simbol kurang dari (<) dan lebih besar dari (>), dan deskripsi di dalamnya, dengan nilai Anda sendiri. Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.

    { "Statement": [ { "Resource": "<Optional but recommended: URL of the file>", "Condition": { "DateLessThan": { "AWS:EpochTime": <Required: ending date and time in Unix time format and UTC> }, "DateGreaterThan": { "AWS:EpochTime": <Optional: beginning date and time in Unix time format and UTC> }, "IpAddress": { "AWS:SourceIp": "<Optional: IP address>" } } } ] }

    Perhatikan hal berikut:

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

  3. Base64-encode pernyataan kebijakan menggunakan MIME pengkodean base64. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet.

  4. Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.

    Ganti karakter tidak valid ini Dengan karakter valid ini

    +

    - (tanda hubung)

    =

    _ (garis bawah)

    /

    ~ (tilde)

  5. Tambahkan nilai yang dihasilkan ke tanda tangan Anda URL setelahnyaPolicy=.

  6. Buat tanda tangan untuk tanda tangan yang ditandatangani URL dengan hashing, penandatanganan, dan base64 yang menyandikan pernyataan kebijakan. Untuk informasi selengkapnya, lihat Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom.

Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom

Saat Anda membuat pernyataan kebijakan untuk kebijakan kustom, Anda menentukan nilai berikut.

Sumber Daya

ItuURL, termasuk string kueri apa pun, tetapi tidak termasuk CloudFront Policy,Signature, dan Key-Pair-Id parameter. Sebagai contoh:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes

Anda hanya dapat menentukan satu URL nilai untukResource.

penting

Anda dapat menghilangkan Resource parameter dalam kebijakan, tetapi melakukannya berarti siapa pun yang memiliki tanda tangan URL dapat mengakses semua file dalam distribusi apa pun yang terkait dengan key pair yang Anda gunakan untuk membuat tanda tanganURL.

Perhatikan hal berikut:

  • Protokol – Nilai harus dimulai dengan http://, https://, atau *://.

  • Parameter string kueri — Jika URL memiliki parameter string kueri, gunakan karakter garis miring terbalik (\) untuk menghindari karakter tanda tanya (?) yang memulai string kueri. Sebagai contoh:

    https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes

  • Karakter wildcard — Anda dapat menggunakan karakter wildcard URL dalam kebijakan. Karakter wildcard berikut didukung:

    • asterisk (*), yang cocok dengan nol atau lebih karakter

    • tanda tanya (?), yang cocok persis dengan satu karakter

    Jika CloudFront sesuai dengan kebijakan URL dalam HTTP permintaan, URL dalam kebijakan dibagi menjadi empat bagian—protokol, domain, jalur, dan string kueri—sebagai berikut: URL

    [protocol]://[domain]/[path]\?[query string]

    Bila Anda menggunakan karakter wildcard dalam kebijakan, pencocokan wildcard hanya berlaku dalam batas-batas bagian yang berisi wildcard. URL Misalnya, pertimbangkan ini URL dalam kebijakan:

    https://www.example.com/hello*world

    Dalam contoh ini, wildcard asterisk (*) hanya berlaku di dalam bagian jalur, sehingga cocok dengan URLs https://www.example.com/helloworld danhttps://www.example.com/hello-world, tetapi tidak cocok dengan. URL https://www.example.net/hello?world

    Pengecualian berikut berlaku untuk batas bagian untuk pencocokan wildcard:

    • Tanda bintang di bagian jalur menyiratkan tanda bintang di bagian string kueri. Misalnya, http://example.com/hello* setara dengan http://example.com/hello*\?*.

    • Tanda bintang tertinggal di bagian domain menyiratkan tanda bintang di bagian jalur dan string kueri. Misalnya, http://example.com* setara dengan http://example.com*/*\?*.

    • A URL dalam kebijakan dapat menghilangkan bagian protokol dan mulai dengan tanda bintang di bagian domain. Dalam hal ini, bagian protokol secara implisit diatur ke tanda bintang. Misalnya, URL *example.com dalam kebijakan setara dengan*://*example.com/.

    • Tanda bintang dengan sendirinya ("Resource": "*") cocok dengan apa punURL.

    Misalnya, nilai: https://d111111abcdef8.cloudfront.net/*game_download.zip* dalam kebijakan cocok dengan semua hal berikutURLs:

    • https://d111111abcdef8.cloudfront.net/game_download.zip

    • https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

    • https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

  • Nama domain alternatif — Jika Anda menentukan nama domain alternatif (CNAME) URL dalam kebijakan, HTTP permintaan harus menggunakan nama domain alternatif di halaman web atau aplikasi Anda. Jangan tentukan Amazon S3 URL untuk file dalam kebijakan.

DateLessThan

Tanggal kedaluwarsa dan waktu untuk URL dalam format waktu Unix (dalam detik) dan Waktu Universal Terkoordinasi (). UTC Dalam kebijakan, jangan lampirkan nilai dalam tanda kutip. Untuk selengkapnyaUTC, lihat Tanggal dan Waktu di Internet: Stempel Waktu.

Misalnya, 31 Januari 2023 10:00 UTC mengonversi ke 1675159200 dalam format waktu Unix.

Ini adalah satu-satunya parameter yang diperlukan di Condition bagian ini. CloudFront memerlukan nilai ini untuk mencegah pengguna memiliki akses permanen ke konten pribadi Anda.

Untuk informasi selengkapnya, silakan lihat Saat CloudFront memeriksa tanggal kedaluwarsa dan waktu dalam tanda tangan URL

DateGreaterThan (Opsional)

Tanggal dan waktu mulai opsional untuk format waktu URL dalam Unix (dalam detik) dan Waktu Universal Terkoordinasi (UTC). Pengguna tidak diizinkan untuk mengakses file pada atau sebelum tanggal dan waktu yang ditentukan. Jangan melampirkan nilai dalam tanda petik.

IpAddress (Opsional)

Alamat IP klien yang membuat HTTP permintaan. Perhatikan hal berikut:

  • Untuk mengizinkan alamat IP mengakses file, hapus IpAddress parameter.

  • Anda dapat menentukan salah satu alamat IP atau satu rentang alamat IP. Anda tidak dapat menggunakan kebijakan untuk mengizinkan akses jika alamat IP klien berada di salah satu dari dua rentang terpisah.

  • Untuk memungkinkan akses dari satu alamat IP, Anda menentukan:

    "IPv4 IP address/32"

  • Anda harus menentukan rentang alamat IP dalam IPv4 CIDR format standar (misalnya,192.0.2.0/24). Untuk informasi selengkapnya, lihat Perutean Antar Domain Tanpa Kelas (CIDR): Rencana Penetapan dan Agregasi Alamat Internet.

    penting

    Alamat IP dalam IPv6 format, seperti 2001:0 db 8:85 a3: :8a2e: 0370:7334, tidak didukung.

    Jika Anda menggunakan kebijakan khusus yang menyertakanIpAddress, jangan aktifkan IPv6 distribusi. Jika Anda ingin membatasi akses ke beberapa konten berdasarkan alamat IP dan IPv6 permintaan dukungan untuk konten lain, Anda dapat membuat dua distribusi. Untuk informasi selengkapnya, lihat Aktifkan IPv6 dalam topik Referensi pengaturan distribusi.

Contoh pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom

Contoh pernyataan kebijakan berikut menunjukkan cara mengontrol akses ke file tertentu, semua file di direktori, atau semua file yang terkait dengan ID pasangan kunci. Contoh juga menunjukkan cara mengontrol akses dari alamat IP individual atau berbagai alamat IP, dan bagaimana mencegah pengguna menggunakan tanda tangan URL setelah tanggal dan waktu yang ditentukan.

Jika Anda menyalin dan menempelkan salah satu contoh ini, hapus spasi kosong (termasuk tab dan karakter baris baru), ganti nilai dengan nilai Anda sendiri, dan sertakan karakter baris baru setelah tanda kurung kurung penutup (). }

Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.

Contoh pernyataan kebijakan: Akses satu file dari berbagai alamat IP

Contoh kebijakan kustom berikut dalam tanda tangan URL menetapkan bahwa pengguna dapat mengakses file https://d111111abcdef8.cloudfront.net/game_download.zip dari alamat IP dalam rentang 192.0.2.0/24 hingga 31 Januari 2023 10:00: UTC

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }

Contoh pernyataan kebijakan: Akses semua file dalam direktori dari berbagai alamat IP

Contoh kebijakan kustom berikut memungkinkan Anda membuat tanda tangan URLs untuk file apa pun di training direktori, seperti yang ditunjukkan oleh karakter wildcard asterisk (*) dalam parameter. Resource Pengguna dapat mengakses file dari alamat IP dalam kisaran 192.0.2.0/24 hingga 31 Januari 2023 10:00: UTC

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }

Setiap yang ditandatangani URL dengan mana Anda menggunakan kebijakan ini memiliki URL yang mengidentifikasi file tertentu, misalnya:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Contoh pernyataan kebijakan: Akses semua file yang terkait dengan ID key pair dari satu alamat IP

Contoh kebijakan kustom berikut memungkinkan Anda membuat tanda tangan URLs untuk file apa pun yang terkait dengan distribusi apa pun, seperti yang ditunjukkan oleh karakter wildcard asterisk (*) dalam parameter. Resource Yang ditandatangani URL harus menggunakan https:// protokol, bukanhttp://. Pengguna harus menggunakan alamat IP 192.0.2.10/32. (Nilai 192.0.2.10/32 dalam CIDR notasi mengacu pada satu alamat IP,192.0.2.10.) File hanya tersedia mulai 31 Januari 2023 10:00 UTC hingga 2 Februari 2023 10:00: UTC

{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1675159200 }, "DateLessThan": { "AWS:EpochTime": 1675332000 } } } ] }

Setiap yang ditandatangani URL dengan mana Anda menggunakan kebijakan ini memiliki URL yang mengidentifikasi file tertentu dalam CloudFront distribusi tertentu, misalnya:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Tanda tangan URL juga menyertakan ID key pair, yang harus dikaitkan dengan grup kunci tepercaya dalam distribusi (d111111abcdef8.cloudfront.net) yang Anda tentukan di. URL

Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom

Tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom adalah versi pernyataan kebijakan yang di-hash, ditandatangani, dan dikodekan base64. Untuk membuat tanda tangan untuk kebijakan kustom, selesaikan langkah berikut.

Untuk informasi tambahan dan contoh cara membuat, menandatangani, dan mengkode pernyataan kebijakan, lihat:

Opsi 1: Untuk membuat tanda tangan dengan menggunakan kebijakan khusus
  1. Gunakan fungsi hash SHA -1 dan RSA hash dan tandatangani pernyataan JSON kebijakan yang Anda buat dalam prosedur. Untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom Gunakan versi pernyataan kebijakan yang tidak lagi menyertakan spasi kosong tetapi belum dikodekan base64.

    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 ditandatangani URL.

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

  3. Base64-encode string menggunakan MIME base64 encoding. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet.

  4. Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.

    Ganti karakter tidak valid ini Dengan karakter valid ini

    +

    - (tanda hubung)

    =

    _ (garis bawah)

    /

    ~ (tilde)

  5. Tambahkan nilai yang dihasilkan ke tanda tangan Anda URL setelahnya&Signature=, dan kembali Untuk membuat tanda tangan URL menggunakan kebijakan kustom ke selesai menggabungkan bagian-bagian yang Anda tandatangani. URL