- 印刷する
- PDF
CDN の申し込み
- 印刷する
- PDF
Classic/VPC環境で利用できます。
NAVERクラウドプラットフォームコンソールで CDNサービスを申し込む方法を説明します。
CDNの申し込み
Global CDNサービス新たに申し込む方法は、次の通りです。
- NAVERクラウドプラットフォームコンソールの Region メニューや Platform メニューから利用中の環境をクリックします。
- Services > Content Delivery > Global CDN メニューを順にクリックします。
- [CDNの申し込み] ボタンをクリックします。
- 次のステップを順に行います。
1. サービス設定
サービス名、プロトコル、ドメインなどの CDNサービスと関連したプロパティを設定します。設定する項目は次の通りです。
項目 | 説明 |
---|---|
サービス名 | サービスを区別する固有名を入力
|
サービスプロトコル | CDNサービスで使用するプロトコルの設定
|
サービスドメイン | クライアントがアクセスする CDNドメインの設定
|
Access Log | CDNに流入されるリクエスト情報ログを Object Storage内での保存有無を選択
|
説明 | 必要に応じて CDNの簡単なメモを入力 |
- ログ保存機能の使用時に、Object Storageのご利用の申し込みとバケットの作成が完了している必要があります。サービス利用に関する詳細は、Object Storageご利用ガイドをご参照ください。
- ログファイルは複数の項目を含めており、各項目は空白で区分されます。データがない場合は「-」と表示します。
- ログファイルのフォーマット
client_ip - - [date] "http_method url_stem HTTP/1.1" status_code total_bytes "referrer" "user_agent" "cookie"
client_ip
: クライアント IPアドレス- -
: 使用しない値[date]
: リクエスト日時"http_method url_stem HTTP/1.1"
: HTTPリクエストメソッド、URI、HTTPバージョンstatus_code
: レスポンスコードtotal_bytes
: サーバがクライアントにレスポンスした全体容量"referrer"
: リクエスト時の referrer情報"user_agent"
: クライアントのエージェント情報"cookie"
: リクエスト時のクッキ―値- 例)
211.249.40.9 - - [09/Feb/2018:03:50:01 +0000] "GET /nrbjdrlsuogw479257.gcdn.ntruss.com/sample_mv.mp4 HTTP/1.1" 200 20444604 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"
2. ソース設定
コンテンツソースの場所を指定し、ソースサーバと CDNキャッシュサーバ間の通信に関連したプロパティを設定します。設定する項目は次の通りです。
項目 | 説明 |
---|---|
ソースの位置 | CDNサービスを利用するコンテンツソースの場所を指定
|
ソースのパス(選択) | 実際にコンテンツソースが位置している詳細ディレクトリを入力。ソースの場所が全体パスではなく、特定のパスを使用する場合にのみ追加指定。
|
Forward Host Header | CDNからソースサーバにリクエストする場合に転送されるホストヘッダを設定。ソースの場所が Object Storageの場合、Origin Hostnameのみ設定可能。
|
Cache Key Hostname | コンテンツの固有 IDのキャッシュキーを設定。サービス特性に応じて適切に選択すると、キャッシュ効率が向上。
|
Gzip Compression | コンテンツの圧縮転送の有無を選択
|
Custom Header(ソースリクエスト) | ソースのリクエスト時にヘッダを追加/変更/削除してリクエストするように設定。ソースに対するアクセスの制御目的で活用可能。
|
有効認証機関(Certificate Authority)
HTTPSの使用時に「man-in-the-middle(MITM)」攻撃を防ぐために、ソースサーバの証明書の有効性を確認します。以下の Certificate Authority(CA)で発行された証明書は、有効性が確認されます。
Certificate Authority |
---|
VeriSign Class 4 Public Primary Certification Authority - G3 |
AddTrust External CA Root |
Class 2 Primary CA |
Network Solutions Certificate Authority |
Entrust Root Certification Authority |
thawte Primary Root CA |
DigiCert Assured ID Root CA |
QuoVadis Root CA 2 G3 |
GlobalSign Root CA |
America Online Root Certification Authority 2 |
QuoVadis Root Certification Authority |
QuoVadis Root CA 3 |
SwissSign Silver CA - G2 |
Certum CA |
GlobalSign |
SwissSign Gold CA - G2 |
SecureTrust CA |
AffirmTrust Commercial |
Go Daddy Root Certificate Authority - G2 |
Entrust Root Certification Authority - G2 |
Global Chambersign Root |
thawte Primary Root CA - G3 |
Starfield Services Root Certificate Authority - G2 |
Baltimore CyberTrust Root |
VeriSign Class 3 Public Primary Certification Authority - G5 |
VeriSign Universal Root Certification Authority |
GeoTrust Global CA |
AffirmTrust Premium |
DigiCert High Assurance EV Root CA |
QuoVadis Root CA 2 |
UTN-USERFirst-Hardware |
Entrust.net Certification Authority (2048) |
GeoTrust Primary Certification Authority |
AffirmTrust Networking |
GeoTrust Primary Certification Authority - G3 |
DST Root CA X3 |
COMODO Certification Authority |
UTN - DATACorp SGC |
VeriSign Class 3 Public Primary Certification Authority - G3 |
TC TrustCenter Class 2 CA II |
Cybertrust Global Root |
DigiCert Global Root CA |
3. キャッシュ設定
Global CDNのキャッシュオプション、キャッシュの有効期限切れ時間などのキャッシュと関連プロパティを設定します。設定する項目は次の通りです。
項目 | 説明 |
---|---|
Caching Option | 基本的なキャッシュポリシーの設定
|
Force Revalidation of Stale Objects | ソースサーバとの通信が難しい場合、キャッシュされたコンテンツの提供有無を選択
|
Cache expiry | キャッシュされたコンテンツとソースを比較し、変更の有無を確認する周期を指定
|
Ignore Query String | ソースサーバにコンテンツをリクエストする場合、クライアントのリクエスト文のクエリ文字列の無視有無を選択。キャッシュの効率のために使用可能。
|
Remove Vary Header | ソースで Vary ヘッダをレスポンスする場合、ヘッダの削除有無を選択。キャッシュの効率のために使用可能。
|
Large File Optimization | 大容量ファイルをサービスする場合、キャッシュの効率のための最適化転送有無を選択
|
4. Viewer転送設定
CDNキャッシュサーバからユーザーにコンテンツを転送する場合に適用するプロパティを設定します。設定する項目は次の通りです。
項目 | 説明 |
---|---|
Gzip Compression | クライアントにコンテンツを転送する場合、圧縮転送の有無を選択
|
Referrer Domain | 特定のドメインリファラが含まれているリクエストのみレスポンスするように設定。アクセス制御の目的として活用。
|
Security Token | トークン認証で許可されたリクエストのみレスポンスするように設定
|
Custom Header(ユーザーレスポンス) | レスポンス時にヘッダを追加/変更/削除してレスポンスするように設定
|
認証トークン作成
Security Token を使用する場合、以下の内容を参照して認証トークンを作成します。
- トークンは言語別に提供される SDKを通じて作成できます。
- Python: https://github.com/akamai/EdgeAuth-Token-Python
- Java: https://github.com/akamai/EdgeAuth-Token-Java
- Ruby: https://github.com/akamai/EdgeAuth-Token-Ruby
- NodeJS: https://github.com/akamai/EdgeAuth-Token-Node
- Golang: https://github.com/mobilerider/EdgeAuth-Token-Golang
- C#: https://github.com/BookBeat/EdgeAuth-Token-CSharp
- トークン作成に必要なパラメータは、次の通りです。
- トークン名: 「token」に一括適用
- Start(st)/End times(exp): トークンが有効な開始/終了時間
- Key: Security Token 設定時に自動で発行され、認証パスワード として表示される値
- ACL(Access Control List): トークンでアクセスを許可する対象 URI。ワイルドカード(*)を用いて特定のパス単位で設定可能。
- 例)
Javaで認証トークンを作成
- トークン作成のサンプルコード
package com.akamai.edgeauth; public class ExampleEdgeAuth { public static void main(String[] args) { String hostname = "example.cdn.ntruss.com"; // サービスドメイン名 String ET_ENCRYPTION_KEY = "b2b1"; // トークンを作成するための key String tokenName = "token"; // トークン名は「token」に固定 long duration = 3600L; // 3600 seconds = 1 hour try { EdgeAuth ea = new EdgeAuthBuilder() .key(ET_ENCRYPTION_KEY) .startTime(EdgeAuth.NOW) .windowSeconds(duration) .tokenName(tokenName) .escapeEarly(false) .build(); String acl = "/sample.pdf*"; //*/ String file_url = "/sample.pdf"; String token = ea.generateACLToken(acl); String url = String.format("http://%s%s?%s=%s", hostname, file_url, tokenName, token); System.out.println(url); } catch (EdgeAuthException e) { e.printStackTrace(); } } }
- コード実行後に作成されたリクエスト URL
http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507
Pythonで認証トークンを作成
- トークン作成のサンプルコード
$ python cms_edgeauth.py -k b2b1 -n token -s now -w 3600 -a /sample.pdf* 例のように入力語を入力 => 以下のような結果を出力 token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
- コード実行後に作成されたリクエスト URL
http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
ユーザーのトークン作成サーバの時間が CDNサーバの時間より2~4秒早い場合、CDNサーバでトークンパラメータのうち start time値を「too early」と認識して認証失敗が発生することがあります。これを防ぐために、start time値を現在より10秒早く設定し、end_time値を10秒遅く設定してください。トークンを作成するウェブサーバの時間を NTPで正確に同期します。
5. 確認
設定内容を確認し、画面下の [CDNの申し込み] ボタンをクリックします。
- 申し込んだ CDNがリストに追加され、 申込中 の状態で表示されます。
- CDNがグローバル拠点にすべて構成されるまで約2時間以上がかかり、構成が完了したら 運用中 の状態に変更されます。
CDN使用のための顧客 DNS設定
正常にサービスを利用するには、CDNの申し込み時にサービスドメインを顧客が保有する別途のドメインに設定し、CDNサービスの申し込み後に表示される CDNサービスドメインを運用中の DNSに接続する必要があります。
運用中の DNSシステムまたはホスティング会社で CNAMEレコードを用いて CDNサービスドメインを登録します。
サーバで dig
または nslookup
コマンドを通じて CNAMEレコードが正常に設定されているか確認できます。
- 例) 顧客ドメインが「sample.example.com」、CDNサービスドメインが「example.gcdn.ntruss.com」」の場合
sample.navercdn.com 600 IN CNAME example.gcdn.ntruss.com.