デフォルトでは、CDN によって配信されるコンテンツは、URL を知っている人なら誰でも公開アクセスできます。不正ダウンロードやサイトリソースの不正利用を防ぐために、URL 署名を有効にできます。この機能は、ホットリンク保護や IP ブラックリスト、ホワイトリストよりも強力な保護を提供します。URL 署名は、リクエスト URL に含まれる暗号化された文字列とタイムスタンプを検証することで、オリジンリソースを保護します。
仕組み
URL 署名機能は、Alibaba Cloud CDN の POP (Point of Presence) とオリジンサーバーを使用して、リソースのホットリンクを防止する安全な方法を作成します。このプロセスには、次のコンポーネントが含まれます。
オリジンアプリケーションサーバー: アルゴリズムとキーを含む署名ルールに基づいて、クライアント用の署名付き URL を生成します。
クライアント: リソースリクエストを開始し、検証のために署名付き URL を CDN POP に送信します。
CDN POP: 署名付き URL 内の署名付き文字列やタイムスタンプなどの情報を検証します。
顧客は、オリジンサーバーで署名付き URL 生成ルールを構成します。これらのルールには、署名アルゴリズムとキーが含まれます。
たとえば、署名付き URL は
http://DomainName/timestamp/md5hash/FileNameです。クライアントがサーバー上のページにアクセスすると、サーバーはルールに基づいて署名付き URL を生成します。その後、サーバーはページコンテンツ内に署名付き URL をクライアントに返します (図のステップ 2 および 3)。
クライアントは、署名付き URL を使用して POP からリソースをリクエストします (図のステップ 4)。
POP は、署名付き URL 内の署名付き文字列やタイムスタンプなどの情報を検証し、リクエストが有効かどうかを確認します。
認証が失敗した場合、アクセスリクエストは拒否されます。
認証が成功した場合、リクエストは処理されます。
説明リソースが POP にキャッシュされていない場合、POP は署名付き URL から認証パラメーターを削除し、元の URL (例:
http://DomainName/FileName) に復元してから、元の URL を使用してキャッシュキーを生成するか、オリジンリクエストを開始します。CDN によってリクエスト URL が認証されると、URL 内の中国語文字やその他の非 ASCII 文字などの特殊文字は エンコードされます。
ログ動作
認証に失敗したリクエストでも POP に到達する可能性があります。ただし、POP はこれらのリクエストを拒否し、403 状態コードを返します。失敗した認証試行は、CDN ログに記録されます。
課金
URL 署名はカスタム暗号化文字列とタイムスタンプを検証するため、POP が不正なリクエストをブロックする際に少量のトラフィック料金が発生します。クライアントが HTTPS プロトコルを使用する場合、HTTPS リクエスト料金も発生します。これは、不正なリクエストをブロックするために POP の処理リソースが消費されるためです。
URL 署名の構成と有効化
オリジンアプリケーションサーバーで署名付き URL の生成ルールを構成していることを確認してください。これらのルールには、署名アルゴリズムとキーが含まれます。
CDN で構成された URL 署名ロジックは、オリジンアプリケーションサーバー上の URL 署名ロジックと一貫している必要があります。
CDN コンソール にログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、対象のドメイン名を見つけ、操作 列の 管理 をクリックします。
ドメインのナビゲーションウィンドウで、リソースアクセス制御 をクリックします。
[URL 署名] タブをクリックします。
[URL サイニング] エリアで、[変更] をクリックします。
URL 署名の設定 スイッチをオンにし、URL 署名情報を設定します。

パラメーター
説明
署名タイプ
Alibaba Cloud CDN は、署名計算のために 4 つの方法を提供します。オリジンリソースを保護するために、暗号化されたアクセス URL の形式に基づいて署名方法を選択します。URL 署名タイプは次のとおりです。
説明URL 署名エラーは 403 エラーを返します。
MD5 計算エラー
例:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be時間関連エラー
例:
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
マスターキー
認証方式のプライマリパスワードを入力します。パスワードは 6 ~ 128 文字の長さで、大文字、小文字、および数字を含めることができます。
バックアップキー
署名方法のセカンダリキーを入力します。キーは 6 ~ 128 文字の長さで、大文字、小文字、および数字を含めることができます。プライマリキーまたはセカンダリキーのいずれか少なくとも 1 つを指定する必要があります。
署名付きURLの有効期間
CDN で構成された署名付き URL の有効期間です。ユーザーは (タイムスタンプ + 有効期間) の時間範囲内で CDN にアクセスできます。この期間を過ぎると、認証は期限切れになります。
単位: 秒
有効値の範囲: 1 ~ 31536000
デフォルト値: 1800 (30 分)
例: 署名サーバーが 2020 年 8 月 15 日 15:00:00 (UTC+8) に署名付き URL を生成し、有効期間が 1800 秒の場合、署名付き URL は 2020 年 8 月 15 日 15:30:00 (UTC+8) に期限切れになります。
署名パラメーター
署名パラメーターの名前をカスタマイズできます。これは、[署名タイプ] が [タイプ F] に設定されている場合にのみ有効です。
タイムスタンプ パラメーター
タイムスタンプパラメーターの名前をカスタマイズできます。これは、[署名タイプ] が [タイプ F] に設定されている場合にのみ有効です。
タイムスタンプ形式
タイムスタンプ形式を設定します。10 進数 (UNIX タイムスタンプ) と 16 進数 (UNIX タイムスタンプ) の両方がサポートされています。これは、[署名タイプ] が [タイプ F] に設定されている場合にのみ有効です。
URL エンコーディング
URL エンコーディングスイッチです。デフォルトでは無効になっています。有効にすると、ユーザーリクエスト URL は URL エンコードされます。これは、[署名タイプ] が [タイプ F] に設定されている場合にのみ有効です。
ルール条件
ルール条件は、ユーザーリクエスト内のさまざまなパラメーターを識別し、構成がリクエストに適用されるかどうかを判断します。
使用しない: ルール条件を使用しません。
ルール条件を追加または編集するには、ルールエンジン で管理します。
OK をクリックします。
署名付き URL の正確性の検証
署名付き URL を構成した後、サーバーが認証ロジックを正しく実装していることを確認するために、CDN コンソールで対応する署名付き URL を生成することを推奨します。
[署名 URL の生成] エリアで、[元の URL] および署名情報を設定します。

パラメーター
説明
元の URL
完全な元の URL を入力します。例:
https://www.aliyun.com。署名タイプ
URL 署名の構成と有効化 での構成に基づいて、URL 署名タイプを選択します。
暗号化キー
「マスターキー」または「バックアップキー」を、「URL 署名の設定と有効化」で設定したものを入力します。
TTL
URL 署名の構成と有効化 での構成に基づいて、署名付き URL の有効期間を秒単位で入力します。
作成中 をクリックして、認証 URL と Timestamp を取得します。

URL 署名の無効化
CDN で URL 署名機能を無効にしても、クライアントリクエストに URL 内の署名パラメーターが含まれている場合、CDN はリクエスト URL を元の形式に復元できません。その結果、すべてのリクエストはキャッシュミスとなり、オリジンサーバーに転送されます。これにより、オリジントラフィックとオリジンサーバーのコストが急増します。したがって、URL 署名の使用を停止するには、アプリケーションサーバーと CDN コンソールの両方で機能を無効にする必要があります。
CDN コンソールの URL 認証 エリアで、変更 をクリックし、URL 署名スイッチをオフにします。
アプリケーションサーバーのリクエスト URL から署名パラメーターを削除します。