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>)。input<xenc:EncryptedData>要素から復号化されたテキストを返します。これには、暗号方式と RSA 暗号化キーが含まれます。
<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 -certKeyName にキー名エレメントを含めます。要素は
<ds:KeyName>です。 -
2 -証明書の RSA 公開キーを持つ KeyValue 要素を含めます。要素は
<ds:KeyValue>です。 -
4 -証明書のシリアル番号と発行者 DN を含む X509IssuerSerial エレメントを含めます。要素は
<ds:X509IssuserSerial>です。 -
8 -X509SubjectName エレメントを証明書のサブジェクト DN に含めます。要素は
<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)"
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")"
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: encryptedData%)) を復号化します。これには、次の CLI コマンドを使用して xenc XML 名前空間を事前に追加する必要があります。
add ns xmlnamespace xenc http://www.w3.org/2001/04/xmlenc#
<xenc:EncryptedData>要素((XPATH (XP%//XENC: encryptedData%) は空でない文字列を返す)を含む要求に my-xml-decrypt-action を適用します。このアクションは、NetScalerアプライアンスで構成されたサービス宛のリクエスト内の暗号化されたデータを復号化します。