キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
738
閲覧回数
0
いいね!
0
コメント
taknakam
Cisco Employee
Cisco Employee

URL Signing とは

URLパラメータとしてシグネチャを付与しておき、Service Engine において、この値が正しいかどうか検証を行い、正しいシグネチャである場合のみ、アクセスが許可されるようにする仕組みです。

URL Signing が使用可能なプロトコル

以下のプロトコルでサポートされています。

  • WebEngine (HTTP)
  • WMT (RTSP)
  • FMS (RTMP)
  • Movie-Streamer (RTSP)

設定方法

WebEngine での設定例について説明します。

Key の登録

シグネチャの作成と検証には、共通鍵を使用する方法と、公開鍵/秘密鍵を使用する方法の2パターンがあります。ここでは設定が用意な共通鍵を使用します。鍵は各デバイスの設定画面で登録します(以下の画面)。

URLsigning_key設定_CDSM.png

この例では、以下のパラメータ値を使用します。

Key Id Owner1
Key Id Number2
Keytestkey

CLI で設定する場合は以下のコマンドを使用します。

 se0(config)#url-signature key-id-owner 1 key-id-number 2 key testkey

確認方法は以下の通りです。

 se0#show url-signature
key-id-owner  key-id-number  key  public-key  private-key  symmetric-key
-------------------------------------------------------------------
      1             2         ****

シグネチャを含む URL の生成

シグネチャの生成には、configuration guide にて公開されている Python Script を使用します。

実行には Python が必要です。

  • Example of a Python URL Signing Script

       http://www.cisco.com/en/US/docs/video/cds/cda/is/2_6/configuration_guide/URLsigning.html#wp1100056

configuration guide に記載されているスクリプトをテキストエディタにコピーし、ファイル名「cds-ims-urlsign.py」で保存しておきます。

このスクリプトをパラメータ無しで実行すると、必要なパラメータが確認できます。

 $ python cds-ims-urlsign.py
Usage:
python cds-ims-urlsign.py        
Example:
python cds-ims-urlsign.py rtsp://abc.com/content/Apocalypto.mov 171.71.50.123 120 1 2 BubbaGump 1 ""or1or2

各パラメータの説明は以下の通りです。

urlシグネチャ計算対象の URL
client-ip

アクセスを許可するクライアントのIPアドレス。アクセスを許可するクライアントを限定しない場合は、適当な IPアドレスを入れておく

expiry-delay-seconds

現在の時刻から Expire するまでの秒数

key id owner

鍵の設定で入力した値

key id number

鍵の設定で入力した値

key

鍵の設定で入力した値


exclude-domain

1 又は 0 を指定。1  の場合、シグネチャ計算にドメイン情報を入れない(この場合、シグネチャ検証の設定でもドメイン情報を除外する必要がある)


version

ハッシュ計算方法の指定。0又は指定無しの場合、MD5 を適用する。1 の場合 SHA-1 を適用する。2 の場合、プロトコル情報を除去してから SHA-1 を適用する

以下に生成例を示します。一番下の「US=xxxx」が含まれる行が、シグネチャ付きのURLになります。

 $ python cds-ims-urlsign.py "http://web.cdn.japan-tac.local/sign/test.html" 192.168.20.201 3600 1 2 testkey 0 1

http://web.cdn.japan-tac.local/sign/test.html?SIGV=1&IS=0&ET=1323667407&CIP=192.168.20.201&KO=1&KN=2&US=
SHA1 is used
http://web.cdn.japan-tac.local/sign/test.html?SIGV=1&IS=0&ET=1323667407&CIP=192.168.20.201&KO=1&KN=2&US=7f81a05c5247a640315f9c8f135bfdffd985aca2

Servuce Rule の設定

URL SIgning は Service Rule 機能の中の1つです。そのため、URL Signing を使用するには、Service Rule を有効にする必要があります。Service Rule の設定は XML 形式の設定ファイルを作成し、CDSM からアップロードします。

<CDSRules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema\CDSRules.xsd">
     <Revision>1.0</Revision>

     <CustomerName>cisco</CustomerName>

     <Rule_Patterns>

          <PatternListGrp id = "grp1">

               <UrlRegex>sign</UrlRegex>

               <Domain>web.cdn.japan-tac.local</Domain>

          </PatternListGrp>

     </Rule_Patterns>

     <Rule_Actions>

          <Rule_Validate  matchGroup = "grp1" error-redirect-url = "http://www.cdn.japan-tac.local/error.html" exclude-validation = "client-ip" protocol = "http" />

     </Rule_Actions>

</CDSRules>

上記 XML ファイルでは、以下のような動作を定義しています。

  • URL Signing が適用される条件      
    • URL のドメインが web.cdn.japan-tac.local
    • URL の中に "sign" という文字列が含まれる
    • クライアント IP はシグネチャ検証時の計算に含めない

実行例

python script の出力例で示したシグネチャ付きURLに対して、シグネチャ生成後120秒以内に、クライアント 192.168.20.201 からアクセスした場合、アクセスに成功します。


# curl -v "http://web.cdn.japan-tac.local/sign/test.html?SIGV=1&IS=0&ET=1327498431&CIP=192.168.20.201&KO=1&KN=2&US=d9bc8069539783b4e7cf226c3a31c057dfdcef63"
* About to connect() to web.cdn.japan-tac.local port 80
*   Trying 192.168.20.7... connected
* Connected to web.cdn.japan-tac.local (192.168.20.7) port 80
> GET /sign/test.html?SIGV=1&IS=0&ET=1327498431&CIP=192.168.20.201&KO=1&KN=2&US=d9bc806953
9783b4e7cf226c3a31c057dfdcef63 HTTP/1.1
> User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3
libidn/0.6.5
> Host: web.cdn.japan-tac.local
> Accept: */*
> < HTTP/1.1 200 OK
< Connection: Keep-Alive
< Keep-Alive: timeout=15
< Accept-Ranges: bytes
< ETag: "826776-1d-cc34cf80"
< Last-Modified: Mon, 12 Dec 2011 04:45:02 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 29
< Date: Wed, 25 Jan 2012 12:46:10 GMT
< Server:  Cisco-CDS
Mon Dec 12 13:45:02 JST 2011
* Connection #0 to host web.cdn.japan-tac.local left intact
* Closing connection #0

シグネチャを適当に書き換えてアクセスした場合、設定したエラーページにリダイレクトされます。

# curl -v "http://web.cdn.japan-tac.local/sign/test.html?SIGV=1&IS=0&ET=1327498431&CIP=192.168.20.201&KO=1&KN=2&US=12345"
* About to connect() to web.cdn.japan-tac.local port 80
*   Trying 192.168.20.7... connected
* Connected to web.cdn.japan-tac.local (192.168.20.7) port 80
> GET /sign/test.html?SIGV=1&IS=0&ET=1327498431&CIP=192.168.20.201&KO=1&KN=2&US=d9bc806953
9783b4e7cf226c3a31c057dfdcef6 HTTP/1.1
> User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3
libidn/0.6.5
> Host: web.cdn.japan-tac.local
> Accept: */*
> < HTTP/1.1 302 Found
< Connection: Keep-Alive
< Keep-Alive: timeout=15
< Accept-Ranges: bytes
< Location: http://www.cdn.japan-tac.local/error.html
< Content-Length: 0
< Date: Wed, 25 Jan 2012 12:44:48 GMT
< Server:  Cisco-CDS
* Connection #0 to host web.cdn.japan-tac.local left intact
* Closing connection #0
Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします