Citrix ADC

例 10:ポリシーベースの RSA 暗号化

RSA アルゴリズムは、PKEY_ENCRYPT_PEM () 関数を使用して、事前定義された HTTP およびユーザー定義のヘッダーまたは本文の内容を暗号化します。この関数は、RSA 公開キー(秘密キーではない)のみを受け入れ、暗号化されたデータは公開キーの長さより長くすることはできません。暗号化されるデータがキーの長さよりも短い場合、アルゴリズムは RSA_PKCS1 パディング方法を使用します。

サンプルシナリオでは、この関数を B64ENCODE () 関数と共に使用して、HTTP ヘッダー値を RSA 公開鍵で暗号化された値に置き換えることができます。暗号化されるデータは、RSA 秘密キーを使用して受信者によって復号化されます。

この機能は、書き換えポリシーを使用して実装できます。これを行うには、次のタスクを完了する必要があります。

  1. RSA 公開キーをポリシー式として追加します。
  2. 書き換えアクションを作成します。
  3. 書き換えポリシーを作成します。
  4. 書き換えポリシーをグローバルとしてバインドします。
  5. RSA 暗号化の確認

Citrix ADCコマンドインターフェイスを使用したポリシーベースのRSA暗号化

Citrix ADCコマンドインターフェイスを使用してポリシーベースのRSA暗号化を構成するには、次のタスクを実行します。

Citrix ADCコマンドインターフェイスを使用して、RSA公開キーをポリシー式として追加するには

add policy expression pubkey '"-----BEGIN RSA PUBLIC KEY-----MIGJAoGBAKl5vgQEj73Kxp+9yn1v5gPR1pnc4oLM2a0kaWwBOsB6rzCIy6znwnvwCY1xRvQhRlJSAyJbloL7wZFIJ2FOR8Cz+8ZQWXU2syG+udi4EnWqLgFYowF9zK+o79az597eNPAjsHZ/C2oL/+6qY5a/f1z8bQPrHC4GpFfAEJhh/+NnAgMBAAE=-----END RSA PUBLIC KEY-----"'

Citrix ADCコマンドインターフェイスを使用して、HTTPヘッダー要求を暗号化するアクションを書き換えるには

add rewrite action encrypt_act insert_http_header encrypted_data

HTTP.REQ.HEADER("data_to_encrypt").PKEY_ENCRYPT_PEM(pubkey).B64ENCODE

Citrix ADCコマンドインターフェイスを使用して書き換えポリシーを追加するには

add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act

Citrix ADCコマンドインターフェイスを使用してグローバルに書き換えポリシーをバインドするには

bind rewrite global encrypt_pol 10 -type RES_DEFAULT

Citrix ADCコマンドインターフェイスを使用してRSA暗号化を確認するには

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

* About to connect() to 10.217.24.7 port 80 (#0)

*  Trying 10.217.24.7...

*  connected

*  Connected to 10.217.24.7 (10.217.24.7) port 80 (#0)

> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (amd64-portbld-freebsd8.4) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.3
> Host: 10.217.24.7
> Accept: \*/\*
> data_to_encrypt: Now is the time that tries men's souls
>
< HTTP/1.1 200 OK
< Date: Mon, 09 Oct 2017 05:22:37 GMT
< Server: Apache/2.2.24 (FreeBSD) mod_ssl/2.2.24 OpenSSL/0.9.8y DAV/2
< Last-Modified: Thu, 20 Feb 2014 20:29:06 GMT
< ETag: "6bd9f2-2c-4f2dc5b570880"
< Accept-Ranges: bytes
< Content-Length: 44
< Content-Type: text/html
< encrypted_data: UliegKBJqZd7JdaC49XMLEK1+eQN2rEfevypW91gKvBVlaKM9N9/C2BKuztS99SE0xQaisidzN5IgeIcpQMn+CiKYVlLzPG1RuhGaqHYzIt6C8A842da7xE4OlV5SHwScqkqZ5aVrXc3EwtUksna7jOLr40aLeXnnB/DB11pUAE=
<
* Connection #0 to host 10.217.24.7 left intact
<html><body><h1>It works!</h1></body></html>* Closing connection #0

暗号化する同じデータでこの curl コマンドを実行したあと、暗号化されたデータは実行ごとに異なることを示しています。これは、パディングによって暗号化するデータの先頭にランダムなバイトが挿入され、暗号化されたデータが毎回異なるためです。

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

< encrypted_data: DaOjtl1Pl4DlQKf58MMeL4cFwFvZwhjMqv5aUYM5Iyzk4UpwIYhpRvgTNu2lXEVc1H0tcR1EGC/ViQncLc4EbTurCWLbzjce3+fknnMmzF0lRT6ZZXWbMvsNFOxDA1SnuAgwxWXy/ooe9Wy6SYsL2oi1sr5wTG+RihDd9zP+P14=

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/

. . .

< encrypted_data: eej6YbGP68yHn48qFUvi+fkG+OiO8j3yYLScrRBU+TPQ8WeDVaWnDNAVLvL0ZYHHAU1W2YDRYb+8cdKHLpW36QbI6Q5FfBuWKZSI2hSyUvypTpCoAYcHXFv0ns+tRtg0EPNNj+lyGjKQWtFi6K8IXXISoDy42FblKIlaA7gEriY=

GUIを使用したポリシー・ベースのRSA暗号化

GUI では、次のタスクを実行できます。

GUI を使用して RSA 公開キーをポリシー式として追加するには、次の手順を実行します。

  1. Citrix ADCアプライアンスにサインインし、「 構成 」>「 AppExpert 」>「 高度な式 」の順に選択します。
  2. 詳細ペインで、[Add] をクリックして、RSA 公開キーを高度なポリシー式として定義します。
  3. 「式の作成」ページで、次のパラメータを設定します。
    1. 式名。高度な式の名前。
    2. 式。式エディタを使用して、RSA 公開キーを高度な式として定義します。
    3. コメント。式の簡単な説明。
  4. [作成] をクリックします。

GUI を使用して HTTP ヘッダー要求を暗号化するアクションを書き換える手順は、次のとおりです。

  1. Citrix ADCアプライアンスにサインインし、「 構成 」>「 AppExpert 」>「 書き換え」>「アクション」 の順に選択します。
  2. 詳細ウィンドウで、[追加] をクリックして書き換えアクションを追加します。
  3. 書き換えアクションの作成」 画面で、次のパラメータを設定します。
    1. Name:書き換えアクションの名前。
    2. タイプ。「INSERT_HTTP_HEADER」としてアクションタイプを選択します。
    3. アクションタイプを使用して、ヘッダーを挿入します。書き換えが必要な HTTP ヘッダーの名前を入力します。
    4. 式。アクションに関連付けられている詳細ポリシー式の名前。
    5. コメント。書き換えアクションの簡単な説明。
  4. [作成] をクリックします。

GUI を使用して書き換えの詳細ポリシーを追加するには、次の手順を実行します。

  1. Citrix ADCアプライアンスにサインインし、「 構成 」>「 AppExpert 」>「 書き換え 」>「 ポリシー 」の順に選択します。
  2. [書き換えポリシー] ページで、[追加] をクリックして書き換えポリシーを追加します。
  3. [書き換えポリシーの作成] ページで、次のパラメータを設定します。
    1. Name:書き換えポリシーの名前。
    2. アクション。要求または応答がこの書き換えポリシーと一致する場合に実行する書き換えアクションの名前。
    3. アクションをログに記録する要求がこのポリシーに一致する場合に使用するメッセージログアクションの名前。
    4. 未定義の結果アクション。ポリシー評価の結果が未定義の場合に実行するアクション。
    5. 式。アクションをトリガーする高度なポリシー式の名前。
    6. コメント。書き換えアクションの簡単な説明。
  4. [作成] をクリックします。

GUI を使用して書き換えポリシーをグローバルにバインドするには、次の手順を実行します。

  1. Citrix ADCアプライアンスにサインインし、「 構成 」>「 AppExpert 」>「 書き換え 」>「 ポリシー 」の順に選択します。
  2. [ポリシーの書き換え] 画面で、バインドする書き換えポリシーを選択し、[Policy Manager] をクリックします。
  3. [ポリシーマネージャの書き換え] ページの [バインドポイント] セクションで、次のパラメータを設定します。
    1. バインドポイント: バインドポイントを [デフォルトグローバル] として選択します。
    2. プロトコル。プロトコルの種類を HTTP として選択します。
    3. [接続タイプ]。接続タイプを「要求」として選択します。
    4. [続行] をクリックして、[ポリシーのバインド] セクションを表示します。
    5. [ポリシーのバインド] セクションで、書き換えポリシーを選択し、バインドパラメータを設定します。
  4. [バインド] をクリックします。
例 10:ポリシーベースの RSA 暗号化