URL 署名機能は、オリジンサーバー上のリソースを不正なダウンロードおよびアクセスから保護します。Alibaba Cloud CDN および では、4 種類の URL 署名が提供されています。このトピックでは、type F signing の原理について説明し、例を示します。
原則
Type F 署名付き URL の構造
アクセス URL 形式:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}説明{}は、標準 URL に追加される暗号化された情報を表します。アクセス URL には中国語文字を含めることはできません。
URL 署名は、疑問符 (
?) を含む URL ではサポートされていません。この例の
signパラメーターとtimeパラメーターは、デフォルトのシステムパラメーターです。URL 署名の設定 コンソールで、署名パラメーター および タイムスタンプパラメーター をカスタマイズできます。
フィールド
説明
DomainName
Alibaba Cloud CDN サイトのドメイン名
PrivateKey
16 ~ 32 文字 (大文字、小文字、数字) で構成されるユーザー定義の暗号鍵。
FileName
実際のオリジンリクエスト URL。認証中、FileName は
/で始まる必要があります。timestamp
署名サーバーが署名付き URL を生成する時間であり、[署名付き URL の有効期間] とともに署名付き URL の有効期限を制御します。 タイムスタンプは、署名サーバーからの UNIX タイムスタンプです (UNIX タイムスタンプは、協定世界時 (UTC) の 1970-01-01 00:00:00 から現在までの合計秒数であり、タイムゾーンに依存しない 10 桁の 10 進整数です)。 URL 署名の設定 コンソールで、タイムスタンプ 形式 を 十進法 (UNIX 時間) または 十六進法 (UNIX 時間) に設定します。
説明URL署名の設定 コンソールで TTL を設定します。設定が完了すると、署名付き URL の有効期限は
timestamp+ CDN 用に設定された有効期間です。md5hash
MD5 アルゴリズムを使用して計算された文字列で、0-9 の数字と小文字の英字 a-z で構成され、固定長は 32 です。
md5hashは、次の文字列を使用して計算されます。sstring = "Privatekey+URI+timestamp" // URI は、パラメーターを除くユーザーがリクエストしたオブジェクトの相対アドレスです (例: /Filename) md5hash = md5sum(sstring)認証ロジック
Alibaba Cloud CDN または サーバーがリソースへのアクセスリクエストを受信すると、
タイムスタンプの値に有効期間を加算した値が現在時刻より小さいかどうかを確認します。タイムスタンプの値に有効期間を加算した値が現在の時刻より小さい場合、サーバーは URL が期限切れであると判断し、HTTP 403 エラーを返します。timestamp+署名付き URL の有効期間が現在時刻より大きい場合、sstringメソッドを使用して文字列を構築します (詳細については、表にあるsstringの作成方法をご参照ください)。 次に、MD5 アルゴリズムを使用してmd5hash値を計算します。 計算されたmd5hash値と、ユーザーのアクセスリクエストに含まれるmd5hash値を比較します。値が一致する場合、認証は成功し、リクエストされたリソースが返されます。
説明認証成功後、認証パラメーターは URL から削除され、URL は元の形式に戻ります。このプロセスにより、キャッシュヒット率が向上し、back-to-origin トラフィックが削減されます。例:
認証パラメーターを含む URL:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}認証成功後:
キャッシュキーの生成に使用される URL:
http://DomainName/FileNameオリジンフェッチに使用される URL:
http://DomainName/FileName
値が一致しない場合、認証は失敗し、サーバーは HTTP 403 エラーを返します。
署名付き URL の例
次の例は、Type F URL 署名が機能する仕組みを示しています。
例の条件
オリジンリクエスト:
http://domain.example.com/test.flv説明リクエスト URL に中国語文字またはその他の非 ASCII 文字が含まれている場合、まず URL を エンコード する必要があります。次に、エンコードされた URL を使用してハッシュ化する文字列を構築します。例:
元の URL:
https://example.com/image/AlibabaCloud.jpgエンコードされた URL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
PrivateKey の値:
aliyuncdnexp1234。タイムスタンプの値:
55CE8100。
連結プロセス
この CDN サーバーは、
md5hashを計算するためにハッシュ対象の文字列を構築します。aliyuncdnexp1234/test.flv55CE8100この文字列に基づき、CDN サーバーが
md5hash値を計算します。md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd署名付き URL を生成します。
署名付き URL 形式:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
クライアントが暗号化された URL を使用してリソースにアクセスする場合、CDN サーバーで計算された md5hash 値とアクセス要求内の md5hash 値の両方が a37fa50a5fb8f71214b1e7c95ec7a1bd であり、かつ署名付き URL がその有効期間内である場合、認証は成功します。それ以外の場合、認証は失敗します。