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

CDN:タイプ B 署名

最終更新日:Feb 06, 2026

URL 署名機能は、サイト上のリソースを不正なダウンロードや使用から保護します。Alibaba Cloud の Content Delivery Network (CDN) は、4 つの署名方式を提供しています。このトピックでは、タイプ B 署名の仕組みと例について説明します。

仕組み

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

    http://DomainName/{<timestamp>/<md5hash>}/FileName
    説明

    {}」の内容は、標準 URL に追加される暗号化された情報を表します。

    認証フィールド

    フィールド

    説明

    DomainName

    ご利用の CDN サイトのドメイン名です。

    timestamp

    署名サーバーが署名付き URL を生成する時刻です。このフィールドは、有効期間 と併せて、署名付き URL の有効期限を制御します。時刻は UTC + 08:00 を基準とし、フォーマットは YYYYMMDDHHMM です。

    説明

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

    md5hash

    MD5 アルゴリズムで計算された検証文字列です。0~9 の数字および a~z の小文字から構成される、32 文字の固定長文字列です。

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

    sstring = "Privatekey+timestamp+Path" (Path は、パラメーターを含まない要求オブジェクトの相対アドレスであり、例:/Filename)
    md5hash = md5sum(sstring)

    Filename

    オリジンフェッチでアクセスするファイルのパスです。認証のために、Filename は必ず / で始める必要があります。

  • 認証ロジック

    CDN サーバーはリソースアクセスリクエストを受信すると、timestamp有効期間 の合計が現在時刻より前かどうかを確認します。

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

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

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

        説明

        認証が成功すると、認証パラメーターは URL から削除され、URL は元のフォーマットに復元されます。これにより、キャッシュヒット率が向上し、オリジンへのトラフィックが削減されます。例:

        • 認証パラメーター付きの URL: http://DomainName/{<timestamp>/<md5hash>}/FileName

        • 認証成功後:

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

          • オリジンフェッチに使用される URL: http://DomainName/FileName

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

署名付き URL の例

次の例は、タイプ B 署名の仕組みを示しています。

  • 前提条件

    • 元のリクエストオブジェクト:

      http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
      説明

      リクエスト 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

    • ドメイン名 (CDN サイト用) (DomainName): domain.example.com

    • タイムスタンプ (timestamp): 201508150800

    • プライベートキー (Privatekey): aliyuncdnexp1234

    • ユーザーリクエストの相対パス (Path): /4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

    • オリジンフェッチでアクセスするファイルのパス (Filename): /4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

  • 連結フロー

    1. ハッシュ化用の文字列を構築します:

      // sstring="Privatekey+timestamp+Path"
      sstring=aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
    2. md5hash 値を計算します:

      // md5hash = md5sum(sstring)
      md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0
    3. 署名付き URL を生成します:

      // 署名付き URL=http://DomainName/{<timestamp>/<md5hash>}/FileName
      http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

クライアントが署名付き URL を使用してアクセスリクエストを送信すると、CDN サーバーは md5hash 値を計算します。計算された値がリクエスト内の md5hash 値 (この例では 9044548ef1527deadafa49a890a377f0) と一致し、かつ署名付き URL が期限切れでない場合、認証は成功します。それ以外の場合、認証は失敗します。