Fitur penandatanganan URL digunakan untuk melindungi server asal dari unduhan dan akses yang tidak sah. Dynamic Content Delivery Network (DCDN) mendukung empat jenis penandatanganan URL. Topik ini menjelaskan cara kerja signing tipe C.
Cara kerjanya
Cara sebuah URL ditandatangani berdasarkan signing tipe C
Format 1
http://NamaDomain/{<md5hash>/<timestamp>}/NamaFileFormat 2
http://NamaDomain/NamaFile?{KEY1=<md5hash>&KEY2=<timestamp>}
nullKonten dalam kurung kurawal (
{}) menunjukkan informasi terenkripsi yang ditambahkan ke URL standar.Bidang dalam URL yang ditandatangani
Bidang
Deskripsi
NamaDomain
Nama domain yang dipercepat.
PrivateKey
Kunci kriptografi yang Anda tentukan. Kunci harus memiliki panjang 16 hingga 32 karakter, dan dapat berisi huruf dan angka.
NamaFile
URL sebenarnya yang menunjuk ke sumber daya yang diminta pada server asal. Nilai bidang NamaFile harus dimulai dengan garis miring (
/).timestamp
Waktu saat URL yang ditandatangani dibuat. Timestamp dan nilai TTL menentukan kapan URL yang ditandatangani kedaluwarsa. Timestamp mengikuti format waktu UNIX. Ini adalah jumlah detik yang telah berlalu sejak pukul 00:00:00 Kamis, 1 Januari 1970. Timestamp adalah string yang terdiri dari 10 bilangan bulat desimal positif dan tidak terkait dengan zona waktu. String desimal tersebut dikonversi menjadi string heksadesimal.
nullDalam kebanyakan kasus, periode validitas URL yang ditandatangani sama dengan nilai parameter TTL. Dalam beberapa kasus, server penandatanganan juga menetapkan nilai TTL ke URL yang ditandatangani. Timestamp = timestamp UNIX + TTL. Periode validitas URL yang ditandatangani = Timestamp + TTL yang dikonfigurasikan pada DCDN.
md5hash
String yang dihitung menggunakan algoritma MD5. String tersebut harus memiliki panjang 32 karakter dan dapat berisi angka dan huruf kecil.
Nilai
md5hashdihitung menggunakan metode berikut:sstring = "Privatekey+URI+timestamp" (URI menentukan alamat yang menunjuk ke sumber daya yang diminta. URI tidak berisi parameter seperti /NamaFile.) md5hash = md5sum(sstring)Logika autentikasi
Saat Point of Presence (POP) menerima permintaan, POP memeriksa apakah waktu hasil penambahan nilai
timestampdan nilaiTTLdalam permintaan lebih awal daripada waktu saat ini.Jika waktu hasil penambahan nilai
timestampdan nilaiTTLlebih awal daripada waktu saat ini, POP menganggap URL permintaan telah kedaluwarsa dan mengembalikan kesalahan 403.Jika waktu hasil penambahan nilai
timestampdan nilaiTTLlebih lambat daripada waktu saat ini, sebuahsstringdihasilkan. Kemudian, nilaimd5hashdihitung menggunakan algoritma MD5. Nilaimd5hashyang dihasilkan dibandingkan dengan nilaimd5hashdalam permintaan.Jika nilainya sama, permintaan lolos autentikasi. POP mengembalikan sumber daya yang diminta.
nullJika permintaan lolos autentikasi, parameter penandatanganan URL dihapus dari URL untuk meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal.
Untuk URL yang ditandatangani dalam Format 1 atau Format 2, format URL yang digunakan untuk menghasilkan kunci cache adalah
http://NamaDomain/NamaFile.Untuk URL yang ditandatangani dalam Format 1 atau Format 2, format URL dalam permintaan asal adalah
http://NamaDomain/NamaFile.
Jika kedua nilai tersebut berbeda, permintaan gagal autentikasi. POP mengembalikan kode status HTTP 403.
Contoh
Berikut adalah contoh implementasi signing tipe C.
Kondisi sampel
Mengambil objek dari server asal:
http://domain.example.com/test.flvnullJika URL objek yang diminta berisi karakter Tionghoa, Anda perlu mengkodekan URL sebelum menggabungkan URL yang ditandatangani.
URL Asli:
https://example.com/image/阿里云.jpgURL Terkode:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Tetapkan PrivateKey ke
aliyuncdnexp1234.Tetapkan timestamp ke
55CE8100.
Prosedur penggabungan
Hasilkan string tanda tangan yang digunakan untuk menghitung nilai
md5hash.aliyuncdnexp1234/test.flv55CE8100Hitung nilai
md5hashberdasarkan string tanda tangan.md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bdHasilkan URL yang ditandatangani.
Format 1:
http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flvFormat 2:
http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
Jika klien menggunakan URL yang ditandatangani untuk meminta sumber daya, POP membandingkan nilai md5hash yang dihitung dengan nilai md5hash dalam permintaan. Jika nilainya sama, seperti a37fa50a5fb8f71214b1e7c95ec7a1bd, dan URL yang ditandatangani berada dalam periode validitas, permintaan lolos autentikasi. Jika tidak, autentikasi gagal.