サイト全体ワンタイムURL機能の利用¶
[更新: 2024年08月16日]
ウェブアクセラレータのサイト全体ワンタイムURL機能の利用方法に関するページです。
概要(サイト全体ワンタイムURL機能とは)¶
サイト全体ワンタイムURL機能は、サイト内の全コンテンツにワンタイムURLを設定する機能です。
ウェブアクセラレータのワンタイムURL機能は、指定時間内のみアクセス可能なワンタイムURLを発行し、発行したワンタイムURLを経由してのみコンテンツにアクセスできるように制限します。
オブジェクトストレージなどのオリジン側でレスポンスヘッダが付与することができない環境でも、当機能はご利用可能です。
注意
利用上の注意事項
サイト全体ワンタイムURL機能は有効にするとサイト内の全コンテンツが通常のURLではアクセスできなくなります。
事前にリンク元のURLを全てワンタイムURLに切り替えてからこの機能を有効にしてください。
注釈
特定のコンテンツに個別にワンタイムURLを設定したい場合について
特定のコンテンツに個別にワンタイムURLを設定したい場合は 【TIPS】特定のコンテンツを指定時間のみアクセス可能にしたい(ワンタイムURLを利用する) のページをご確認ください。
注釈
CORS機能と併用する場合について
サイト全体ワンタイムURL機能を有効化した登録サイトのリソース(動画や画像など)を別のウェブサイトに共有する場合、特定のアクセス方法については、通常、同一オリジンポリシーによるアクセスが制限されます。
CORS機能と併用することで、CORS設定に基づいたアクセス拒否/許可を配信制御することができます。詳細は CORS機能の利用 をご確認ください。
仕様と詳細¶
機能仕様¶
サイト全体ワンタイムURLシークレットの上限 | 2つ(※) |
---|---|
サイト全体ワンタイムURLシークレットの文字数制限 | 8文字以上16文字以内 |
サイト全体ワンタイムURLシークレットに使用可能な文字種 | カンマとスペースを除く半角英数記号 |
※ 特定のコンテンツに個別にワンタイムURLを設定する方法 と本機能を併用する場合、シークレットはそれぞれ最大2つ(計4つ)まで設定可能。
ワンタイムURL利用時の個別キャッシュ削除について¶
ワンタイムURLを、個別キャッシュ削除する場合は、URL単位となります。(特定の種類だけのキャッシュ削除はできません)
(例) http://cdn.example.com/secure/example.html?webaccel_secure_time=5d2d9453&webaccel_secure_hash=21d498aa696c35431cd2f0240d9eeb3a
の場合、
http://cdn.example.com/secure/example.html
で個別キャッシュ削除します。
アクセス拒否の扱いについて¶
- 有効期限切れのURLへのアクセス、MD5・有効期限のHEXの指定が無いアクセス、合致しないシークレットから生成したURLへのアクセスは、アクセス拒否となります。
- アクセス拒否の場合、接続元(クライアント)に対して「403 Forbidden」を応答します。
- アクセス拒否については、アクセスグラフおよび月別使用量実績の「リクエスト数」「転送量」の集計に含まれます。
設定手順¶
STEP1 ワンタイムURLの生成¶
対象のサイトのワンタイムURLを生成します。
URLは、「シークレット」、「対象サイトのURL」、有効期限を合わせて生成しますので、任意のサーバで作成可能です。
これを利用して、ウェブサイトやウェブアプリケーションに生成の機能を入れて利用することもできます。
注意
ワンタイムURLを生成した時点では、サイト全体ワンタイムURL機能が無効のため、ワンタイムURLを利用することが出来ません。
ワンタイムURL生成例(コマンド入力)
- 以下の例は、対象のサイトのURLが「
http://cdn.example.com/secure/example.html
」、シークレットの文字列が「secret001
」、有効期限が(2019年08月31日0時0分0秒まで有効)の場合になります。 - ワンタイムURL対象をファイルでなくディレクトリにする場合は、「
/secure/
」といった様に、ディレクトリ名を指定して下さい。
1. 有効期限をUnixTimeで出力します。
# date -d '2019/08/31 00:00:00' +%s
1567177200
2. 有効期限をHEX(16進数)に変換します。
# printf "%x\n" 1567177200
5d6939f0
3.対象のファイルのパスと有効期限のHEX値、シークレットからハッシュ値(MD5)を生成します。
# echo -n "//secure/example.html/secret001/5d6939f0/" | openssl dgst -md5
(stdin)= f1f337e3f3ba0b4e60c7f463c4c1c0c2
ファイルパス、シークレット、有効期限を / で連結し両端に / を付けたものをハッシュ値(MD5)にする。
4.URLと組み合わせれば有効期限まで有効なワンタイムURLが出来上がります。
形式:
http://cdn.example.com/secure/example.html?webaccel_secure_hash="MD5の値"&webaccel_secure_time="HEX値"
URL:
http://cdn.example.com/secure/example.html?webaccel_secure_hash=f1f337e3f3ba0b4e60c7f463c4c1c0c2&webaccel_secure_time=5d6939f0
ワンタイムURL生成例(スクリプト)
- 以下の例は、対象のファイルのURLが「
http://cdn.example.com/secure/example.html
」、シークレットの文字列が「secret001
」、有効期限は、下記スクリプト実行の10分後になります。 - ワンタイムURL対象をファイルでなくディレクトリにする場合は、「
/secure/
」といった様に、ディレクトリ名を指定してください。
#!/bin/bash
base_url="http://cdn.example.com"
file_path="/secure/example.html"
secret="secret001"
limit_time=$(printf %x $(expr $(date +%s) + 600)) # 10分間(600s)有効
md5=$(echo -n "/$file_path/$secret/$limit_time/" | md5sum)
echo "${base_url}${file_path}?webaccel_secure_time=$limit_time&webaccel_secure_hash=${md5%% *}"
スクリプト実行結果
$ ./create_url.sh ←スクリプトのファイル名は任意です
http://cdn.example.com/secure/example.html?webaccel_secure_time=5d2d9453&webaccel_secure_hash=21d498aa696c35431cd2f0240d9eeb3a
ワンタイムURL生成例(PHP)
- 以下の例は、対象のファイルのURLが「
http://cdn.example.com/secure/example.html
」、シークレットの文字列が「secret001
」、有効期限は、下記プログラムの実行の10分後になります。 - ワンタイムURL対象をファイルでなくディレクトリにする場合は、「
/secure/
」といった様に、ディレクトリ名を指定してください。
<?php
$base_url="http://cdn.example.com";
$file_path="/secure/example.html";
$secret = "secret001";
$limit_time = sprintf("%08x", time()+600); // 10分間(600s)有効
echo generateURL($base_url, $file_path, $secret, $limit_time) . "\n";
function generateURL($base_url, $file_path, $secret, $limit_time) {
$md5 = md5("/" . $file_path . "/" . $secret . "/" . $limit_time ."/" );
$url = $base_url . $file_path . "?webaccel_secure_time=" . $limit_time . "&webaccel_secure_hash=" . $md5;
return $url;
}
STEP2 サイト全体ワンタイムURL機能を有効にします。¶
ワンタイムURLの準備ができたら、ウェブアクセラレータのサイト全体ワンタイムURL機能を有効にします。
注意
利用上の注意事項
サイト全体ワンタイムURL機能は有効にするとサイト内の全コンテンツが通常のURLではアクセスできなくなります。
事前にリンク元のURLを全てワンタイムURLに切り替えてからこの機能を有効にしてください。
1. 対象サイトの「設定」ボタンをクリックします。
2. サイト全体ワンタイムURL設定 項目のチェックボックスの有効をクリックします。
3. サイト全体ワンタイムURLを有効にしますか?の画面が開きますので、問題なければ「有効にする」ボタンをクリックします。
4. 表示された サイト全体ワンタイムURLシークレット 項目にシークレットを入力します。
5. 「保存」ボタンをクリックします。
6. サイトの設定を変更しますか?の画面が開きますので、問題なければ「保存」ボタンをクリックします。
※ 変更した内容は、「保存」ボタンをクリックした時点で反映されます。
7. 保存が正常に完了すると、以下のような画面が表示されます。
8. 正常に配信できることを確認します。
STEP1で指定した有効期限内に、生成したURLでアクセスを行い、コンテンツが表示されることをご確認下さい。
- MD5、有効期限のHEXの指定が無い場合、もしくは間違っている場合は、「403 Forbidden」が返されます。
- 正しいMD5、有効期限のHEXを指定しても、有効期限を過ぎた場合は、「403 Forbidden」が返されます。
シークレットのローテーション手順¶
サイト全体ワンタイムURLシークレット 項目に2つの値を設定することで、配信を停止することなくシークレットを変更できます。
有効期限切れの前にシークレットをローテーション(更新)する¶
(例) シークレット「secret001
」から「secret002
」への更新
初期状態
有効期限 | 有効 |
シークレット |
secret001 |
アクセスに使用するURL | http(s)://example.com/foo?webaccel_secure_hash=${hash1}&webaccel_secure_time=${t1} (secret001より生成したワンタイムURL) |
1. 新しいシークレット「secret002」でワンタイムURLを生成します。
※ ワンタイムURLの生成方法については 設定手順 をご確認ください。
2. 新しいシークレットの追加
有効期限(t1)を過ぎる前にコントロールパネルの設定で新しいシークレット「secret002
」を追加します。
コントロールパネルのサイト全体ワンタイムURL設定 項目の追加をクリックします。
追加したテキストボックスに更新するシークレットを入力します。
「保存」ボタンをクリックします。
サイトの設定を変更しますか?の画面が開きますので、問題なければ「保存」ボタンをクリックします。
※ 変更した内容は、「保存」ボタンをクリックした時点で反映されます。
保存が正常に完了すると、以下のような画面が表示されます。
設定が保存されたら、生成したワンタイムURLにアクセス可能か確認します。
3. ワンタイムURLの更新
生成したワンタイムURLでアクセスが確認できたらサイト内のワンタイムURLを更新します。
有効期限 | 有効 |
シークレット |
secret001、secret002 |
アクセスに使用するURL | http(s)://example.com/foo?webaccel_secure_hash=${hash2}&webaccel_secure_time=${t2} (secret002より生成したワンタイムURL) |
4. 古いシークレットの削除
サイト全体ワンタイムURL設定 項目から古いシークレット「secret001
」の削除をクリックします。
「保存」ボタンをクリックします。
サイトの設定を変更しますか?の画面が開きますので、問題なければ「保存」ボタンをクリックします。
保存が正常に完了すると、以下のような画面が表示されます。
有効期限 | 有効 |
シークレット |
secret002 |
アクセスに使用するURL | http(s)://example.com/foo?webaccel_secure_hash=${hash2}&webaccel_secure_time=${t2} (secret002より生成したワンタイムURL) |
有効期限が切れてしまった後にシークレットを更新する¶
(例) シークレット「secret001
」から「secret002
」への更新
初期状態
有効期限 | 期限切れ |
シークレット |
secret001 |
アクセスに使用するURL | http(s)://example.com/foo?webaccel_secure_hash=${hash1}&webaccel_secure_time=${t1} (secret001より生成したワンタイムURL) |
1. 新しいシークレット「secret002」でワンタイムURLを生成します。
※ ワンタイムURLの生成方法については 設定手順 をご確認ください。
2. 新しいシークレットに修正
既に有効期限が過ぎてしまった場合はコントロールパネルの設定で新しいシークレット「secret002
」へ修正します。
コントロールパネルのサイト全体ワンタイムURL設定 項目のシークレットを「secret001
」から「secret002
」へ修正します。
「保存」ボタンをクリックします。
サイトの設定を変更しますか?の画面が開きますので、問題なければ「保存」ボタンをクリックします。
保存が正常に完了すると、以下のような画面が表示されます。
設定が保存されたら、生成したワンタイムURLにアクセス可能か確認します。
3. ワンタイムURLの更新
生成したワンタイムURLでアクセスが確認できたらサイト内のワンタイムURLを更新します。
有効期限 | 有効 |
シークレット |
secret002 |
アクセスに使用するURL | http(s)://example.com/foo?webaccel_secure_hash=${hash2}&webaccel_secure_time=${t2} (secret002より生成したワンタイムURL) |