URL署名機能は、不正なダウンロードやアクセスからオリジンサーバーを保護するために使用されます。 Alibaba Cloud CDN は、3つのURL署名タイプをサポートしています。 このトピックでは、タイプCの署名方法について説明します。
制御ポリシー機能の動作
タイプC署名に基づくURLの署名方法
書式 1
http:// DomainName/{<md5hash>/<timestamp>}/FileName
書式 2
http:// DomainName/FileName ?{& KEY1=<md5hash>&KEY2=<timestamp>}
説明中かっこ (
{}
) で囲まれたコンテンツは、標準URLに追加された暗号化情報を示します。署名付きURLのフィールド
フィールド
説明
DomainName
高速化ドメイン名。
PrivateKey
指定した暗号化キー。 キーの長さは16 ~ 32文字で、英数字を使用できます。
FileName
オリジンサーバー上の要求されたリソースを指す実際のURL。 Filenameフィールドの値は、スラッシュ (
/
) で始まる必要があります。timestamp
署名付きURLが生成される時刻。 タイムスタンプとTTL値は、署名付きURLの有効期限を決定します。 タイムスタンプはUNIXの時刻形式に従います。 1970年1月1日木曜日00:00:00から経過した秒数です。 タイムスタンプは、10個の正の10進整数で構成される文字列であり、タイムゾーンとは無関係です。 10進文字列は16進文字列に変換されます。
説明ほとんどの場合、署名付きURLの有効期間はTTLパラメーターの値と同じです。 場合によっては、署名サーバはまた、署名されたURLにTTL値を割り当てる。 Timestamp=署名サーバーのUNIX timestamp + 署名サーバーによって割り当てられたTTL。 署名付きURLの有効期間= Alibaba Cloud CDN によって割り当てられたタイムスタンプ + TTL。
md5hash
MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字を使用できます。
md5hash
値は、次の方法を使用して計算されます。sstring = "Privatekey + URI + timestamp" (URIは、要求されたリソースを指すアドレスを指定します。 URIには /Filenameなどのパラメーターは含まれません。md5hash = md5sum(sstring)
認証ロジック
ポイントオブプレゼンス (POP) がリクエストを受信すると、POPは、リクエストの
タイムスタンプ
とTTL
値を追加することによって計算された時間が現在の時間よりも前であるかどうかを判断します。リクエストに
timestamp
とTTL
値を追加して計算された時刻が現在の時刻より前の場合、POPはリクエストのURLが期限切れであると判断し、403エラーを返します。リクエストの
timestamp
とTTL
値を加算して計算された時刻が現在の時刻よりも後の場合、sstring
が生成されます。 次に、MD5アルゴリズムに基づいてmd5hash
値が生成されます。 生成されたmd5hash
値は、リクエスト内のmd5hash
値と比較されます。値が同じ場合、リクエストは認証を通過します。 POPは、要求されたリソースを返す。
説明リクエストが認証に合格すると、URL署名パラメーターがURLから削除され、キャッシュヒット率が向上し、back-to-originトラフィックが減少します。
形式1または形式2で署名されたURLの場合、キャッシュキーの生成に使用されるURLの形式は
http:// DomainName/FileName
です。形式1または形式2で署名されたURLの場合、back-to-originリクエストのURLの形式は
http:// DomainName/FileName
です。
2つの値が異なる場合、リクエストは認証に失敗します。 POPはHTTP 403ステータスコードを返します。
例
次の例は、タイプC署名を実装する方法を示しています。
サンプル条件
オリジンサーバーからオブジェクトを取得する:
http://domain.example.com/test.flv
説明要求されたオブジェクトのURLに漢字が含まれている場合は、署名付きURLを連結する前にURLをエンコードする必要があります。
元のURL:
https://example.com/image/阿里. jpg
エンコードされたURL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
PrivateKeyを
aliyuncdnexp1234
に設定します。タイムスタンプを
55CE810 0
に設定します。
連結手順
md5hash
値の計算に使用される署名文字列を生成します。aliyuncdnexp1234/test.flv55CE8100
署名文字列に基づいて
md5hash
値を計算します。md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
署名付きURLを生成します。
形式 1:
http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
形式 2:
http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
クライアントが署名付きURLを使用してリソースをリクエストする場合、Alibaba Cloud CDN は、計算されたmd5hash
値とリクエスト内のmd5hash
値を比較します。 a37fa50a5fb8f71214b1e7c95ec7a1bdのように値が同じ場合、リクエストは認証を通過します。 そうでない場合、要求は認証に失敗します。