XML ペイロードの暗号化と復号化
<http://www.w3.org/TR/2001/PR-xmldsig-core-20010820/>で定義されている W3C XML 暗号化標準に準拠しています。XML_ENCRYPT () および XML_DECRYPT () は、XML 暗号化仕様のサブセットをサポートします。サブセットでは、データ暗号化はバルク暗号方式 (RC4、DES3、AES128、AES192、または AES256) を使用し、RSA 公開キーを使用してバルク暗号キーを暗号化します。
XML_DECRYPT() 関数は、<xenc:EncryptedData> 要素から指定された暗号メソッドに関する情報を取得します。次に、XML 暗号化および復号化関数の概要を示します。
-
XML_ENCRYPT(<certKeyName>, <method> [, <flags>])**. Returns an<xenc:EncryptedData>要素には、暗号化された入力テキストと暗号化キーが含まれています。暗号化キー自体は RSA を使用して暗号化されます。 -
XML_DECRYPT(<certKeyName>)。暗号方式と RSA 暗号化キーを含む入力<xenc:EncryptedData>要素から復号化されたテキストを返します。
<xenc:EncryptedData>要素は、W3C XML 暗号化仕様で定義されています。
-
certKeyName: XML_ENCRYPT()の場合は RSA パブリックキー、またはXML_DECRYPT()の場合は RSA プライベートキーを含む X.509 証明書を選択します。証明書キーは、
add ssl certKeyコマンドで事前に作成されている必要があります。 -
method: XML データの暗号化に使用する暗号化方法を指定します。可能な値:RC4, DES3, AES128, AES192, AES256.
-
flags :
XML_ENCRYPT()によって生成される<xenc:EncryptedData>要素に含まれる次のオプションのキー情報 (<ds:KeyInfo>) を指定するビットマスク。-
1 -証明書キー名を持つキー名要素を含めます。エレメントは
<ds:KeyName>です。 -
2 -証明書からの RSA 公開キーとともに KeyValue 要素を含めます。エレメントは
<ds:KeyValue>です。 -
4 -証明書のシリアル番号と発行者 DN とともに X509IssuerSerial 要素を含めます。エレメントは
<ds:X509IssuserSerial>です。 -
8 -証明書のサブジェクト名 DN とともに X509サブジェクト名要素を含めます。エレメントは
<ds:X509SubjectName>です。 -
16 -証明書全体に X509Certificate 要素を含めます。エレメントは
<ds:X509Certificate>です。
-
式で XML_ENCRYPT () 関数と XML_DECRYPT () 関数を使用します
add ssl certKey my-certkey -cert my-cert.pem -key my-key.pem -passcrypt kxPeMRYnitY=
add rewrite action my-xml-encrypt-action replace "HTTP.RES.BODY(10000).XPATH_WITH_MARKUP(xp%/%)" "HTTP.RES.BODY(10000).XPATH_WITH_MARKUP(xp%/%).XML_ENCRYPT("my-certkey", AES256, 31)" -bypassSafetyCheck YES
add rewrite action my-xml-decrypt-action replace "HTTP.REQ.BODY(10000).XPATH_WITH_MARKUP(xp%//xenc:EncryptedData%)" "HTTP.REQ.BODY(10000).XPATH_WITH_MARKUP(xp%//xenc:EncryptedData%).XML_DECRYPT("my-certkey")" -bypassSafetyCheck YES
add rewrite policy my-xml-encrypt-policy "HTTP.REQ.URL.CONTAINS("xml-encrypt")" my-xml-encrypt-action
add rewrite policy my-xml-decrypt-policy "HTTP.REQ.BODY(10000).XPATH(xp%boolean(//xenc:EncryptedData)%)" my-xml-decrypt-action
bind rewrite global my-xml-encrypt-policy 30
bind rewrite global my-xml-decrypt-policy 30
<xenc:EncryptedData> エレメントで文書を置き換えます。31 で表されるフラグには、すべてのオプション<ds:KeyInfo> 要素が含まれます。
<xenc:EncryptedData> 要素を復号化します (XPATH_WITH_MARKUP (xp%//xenc:暗号化データ%))。これには、次の CLI コマンドを使用して、xenc XML 名前空間を事前に追加する必要があります。
add ns xmlnamespace xenc http://www.w3.org/2001/04/xmlenc#
<xenc:EncryptedData> 要素を含むリクエストに my-xml-decrypt-アクションを適用します ((XPATH (xp%//xenc:EncryptedData%) は空でない文字列を返します)。アクションは、Citrix ADCアプライアンスで構成されたサービスにバインドされた要求内の暗号化されたデータを復号化します。