すべてのプロダクト
Search
ドキュメントセンター

CDN:タイプ C 署名

最終更新日:Feb 06, 2026

URL 署名機能は、サイトのリソースを不正なダウンロードおよび使用から保護します。Alibaba Cloud CDN では、4 種類の署名方式が提供されています。このトピックでは、タイプ C 署名の原理について説明し、例を示します。

仕組み

  • タイプ C 署名における署名付き URL の構造

    • フォーマット 1

      http://DomainName/{<md5hash>/<timestamp>}/FileName
    • フォーマット 2

      http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}
    説明

    {} 内のコンテンツは、標準 URL に追加される暗号化された情報です。

  • フィールドの説明

    フィールド

    説明

    DomainName

    お使いの CDN サイトのドメイン名。

    PrivateKey

    カスタム暗号鍵。16~32 文字の長さで、大文字、小文字、数字を含めることができます。

    ファイル名

    実際のオリジンフェッチのための URL。署名の場合、FileName は / で始まる必要があります。

    timestamp

    署名サーバーが署名付き URL を生成する時刻。このフィールドは、署名付き URL の有効期間 とともに、署名付き URL の有効期限を決定します。時刻は署名サーバーからの UNIX タイムスタンプです。UNIX タイムスタンプは、1970 年 1 月 1 日 00:00:00 UTC から経過した秒数です。これは 10 桁の正の 10 進整数であり、タイムゾーンに依存しません。タイムスタンプは 16 進数フォーマットで表されます。

    説明

    ほとんどの場合、署名付き URL の有効期間は CDN に設定された有効期間です。署名付き URL を生成する際に有効期間を延長する場合、`timestamp` = UNIX タイムスタンプ + 延長期間となります。署名付き URL の実際の有効期間は、`timestamp` + CDN に設定された期間となります。

    md5hash

    MD5 アルゴリズムを使用して計算された文字列。0~9 の数字と a~z の小文字で構成される 32 文字の固定長文字列です。

    md5hash の値は、次の文字列から計算されます。

    sstring = "Privatekey+URI+timestamp" (URI is the relative address of the requested object and does not contain parameters, such as /Filename)
    md5hash = md5sum(sstring)
  • 認証ロジック

    CDN サーバーがリソースのリクエストを受信すると、タイムスタンプ + 署名付き URL の有効期間 が現在の時刻より前であるかどうかを確認します。

    • timestamp + 署名付き URL の有効期間 が現在時刻より前である場合、サーバーは URL が期限切れであると判断し、HTTP 403 エラーを返します。

    • timestamp + 署名付き URL の有効期間 が現在時刻より前ではない場合、サーバーは sstring フォーマットで文字列を構築します。sstring の構築方法については、表をご参照ください。その後、サーバーは MD5 アルゴリズムを使用して md5hash 値を計算します。最後に、サーバーは計算された md5hash 値と、ユーザーのリクエスト内の md5hash 値を比較します。

      • 値が一致する場合、認証は成功し、リソースが返されます。

        説明

        認証が成功すると、署名パラメーターは URL から削除され、元の URL に復元されます。これにより、キャッシュヒット率が向上し、back-to-origin トラフィックが削減されます。例:

        • 署名パラメーターを含む URL フォーマット: http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}

        • 認証成功後:

          • キャッシュキーの生成に使用される URL フォーマット: http://DomainName/FileName

          • 実際のオリジンフェッチのための URL フォーマット: http://DomainName/FileName

      • 値が一致しない場合、認証は失敗し、HTTP 403 エラーが返されます。

署名付き URL の例

以下の例は、タイプ C 署名がどのように実装されるかを示しています。

  • 例の条件

    • オリジンリクエスト:

      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

    • timestamp の値: 55CE8100

  • ステッチングフロー

    1. CDN サーバーは、md5hash を計算するためにハッシュ対象の文字列を構築します。

      aliyuncdnexp1234/test.flv55CE8100
    2. この文字列に基づき、CDN サーバーは、md5hash 値を計算します。

      md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
    3. 署名付き URL を生成します。

      • フォーマット 1:

        http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
      • フォーマット 2:

        http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100

クライアントが署名付き URL を使用してリクエストを行うと、CDN サーバーは独自の md5hash 値を計算します。計算された値が、リクエスト内の md5hash 値(a37fa50a5fb8f71214b1e7c95ec7a1bd)と一致し、かつ署名付き URL が期限切れになっていない場合、認証に成功します。それ以外の場合、認証は失敗します。