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

CDN:タイプA署名

最終更新日:Feb 22, 2024

URL署名機能は、不正なダウンロードやアクセスからオリジンサーバーを保護するために使用されます。 Alibaba Cloud CDN は、3つのURL署名タイプをサポートしています。 このトピックでは、タイプAの署名方法について説明します。

制御ポリシー機能の動作

  • タイプaの署名に基づいてURLに署名する方法

    http:// DomainName/Filename?auth_key ={< timestamp>-rand-uid-<md5hash>}
    説明

    中かっこ ({}) で囲まれたコンテンツは、標準URLに追加された暗号化情報を示します。

  • 署名付きURLのフィールド

    フィールド

    説明

    DomainName

    高速化ドメイン名。

    ファイル名

    オリジンサーバー上の要求されたリソースを指す実際のURL。 Filenameフィールドの値は、スラッシュ (/) で始まる必要があります。

    auth_key

    指定した暗号化キー。

    timestamp

    署名付きURLが生成される時刻。 タイムスタンプとTTL値は、署名付きURLの有効期限を決定します。 タイムスタンプはUNIXの時刻形式に従います。 1970年1月1日の00:00:00から経過した秒数です。 タイムスタンプは、10個の正の10進整数で構成される文字列であり、タイムゾーンとは無関係です。

    説明

    ほとんどの場合、署名付きURLの有効期間はTTLパラメーターの値と同じです。 場合によっては、署名サーバはまた、署名されたURLにTTL値を割り当てる。 Timestamp=署名サーバーのUNIX timestamp + 署名サーバーによって割り当てられたTTL。 署名付きURLの有効期間= Alibaba Cloud CDN によって割り当てられたタイムスタンプ + TTL。

    rand

    乱数。 文字列にハイフン (-) を含めることはできません。 例: 477b3bbc253f467b8def6711128c7bec。 ユニバーサル一意識別子 (UUID) の使用を推奨します。

    uid

    ユーザー ID。 このフィールドを0に設定します。

    md5hash

    MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字を使用できます。

    md5hash値は、次の方法を使用して計算されます。

    sstring = "URI-Timestamp-rand-uid-PrivateKey" (URIは、要求されたリソースを指すアドレスを指定します。) URIには /Filenameなどのパラメーターは含まれません。md5hash = md5sum(sstring) 
  • 認証ロジック

    ポイントオブプレゼンス (POP) がリクエストを受信すると、POPは、リクエストのタイムスタンプTTL値を追加することによって計算された時間が現在の時間よりも前であるかどうかを判断します。

    • リクエストにtimestampTTL値を追加して計算された時刻が現在の時刻より前の場合、POPはリクエストのURLが期限切れであると判断し、403エラーを返します。

    • リクエストにtimestampTTL値を追加して計算された時刻が現在の時刻よりも後の場合、上記の表に記載されているsstringに基づいて文字列が生成されます。 次に、MD5アルゴリズムに基づいてmd5hash値が生成されます。 生成されたmd5hash値は、リクエスト内のmd5hash値と比較されます。

      • 値が同じ場合、リクエストは認証を通過します。 POPは、要求されたリソースを返す。

        説明

        リクエストが認証に合格すると、URL署名パラメーターがURLから削除され、キャッシュヒット率が向上し、back-to-originトラフィックが減少します。

        • キャッシュキーの生成に使用されるURLの形式は、http:// DomainName/FileNameです。

        • back-to-originリクエストのURLの形式は、http:// DomainName/FileNameです。

      • 2つの値が異なる場合、リクエストは認証に失敗します。 POPはHTTP 403ステータスコードを返します。

次の例は、タイプAの署名を実装する方法を示しています。

  • サンプル条件

    • オリジンサーバーからオブジェクトを取得する:

      http://domain.example.com/video/standard/test.mp4
      説明

      要求されたオブジェクトのURLに漢字が含まれている場合は、署名付きURLを連結する前にURLをエンコードする必要があります。

      • 元のURL: https://example.com/image/阿里. jpg

      • エンコードされたURL: https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg

    • auth_keyをaliyuncdnexp1234に設定します。

    • timestampを1444435200に設定します。 署名サーバーが署名付きURLを生成する時刻は、2015年10月10日の08:00:00 (UTC + 8) で、10進数の整数1444435200に変換されます。

  • 連結手順

    1. md5hash値の計算に使用される署名文字列を生成します。

      /ビデオ /標準 /test.mp4-1444435200-0-0-aliyuncdnexp1234
    2. 署名文字列に基づいてmd5hash値を計算します。

      md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e2 8ce
    3. 署名付きURLを生成します。

      http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce

クライアントが署名付きURLを使用してリソースを要求する場合、POPは計算されたmd5hash値を要求内のmd5hash値と比較します。 23bf85053008f5c0e791667a313e2 8ceのように同じ場合、リクエストは認証を通過します。 それ以外の場合、認証は失敗します。