示例10:基于策略的RSA加密
RSA算法使用PKEY_CANET_PEM()函数对HTTP预定义和用户定义的标头或正文内容进行加密。该函数仅接受RSA公钥(非私钥),并且加密数据的长度不能超过公钥的长度。当加密的数据短于密钥长度时,算法使用RSA_PKCS1填充方法。
在示例方案中,该函数可以在重写操作中与B64ENCODE()函数一起使用,以便将HTTP标头值替换为由RSA公钥加密的值。然后,收件人使用RSA私钥对正在加密的数据进行解密。
您可以使用重写策略来实现该功能。为此,您必须完成以下任务:
- 添加RSA公钥作为策略表达式。
- 创建重写操作。
- 创建重写策略。
- 将重写策略绑定为全局。
- 验证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标头请求,请执行以下操作:
添加重写动作encrypt_act insert_http_header encrypted_data
HTTP.REQ.HEADER (data_to_encrypt) .PKEY_ENCRYPT_PEM .B64ENCODE (pubkey)
要使用Citrix ADC命令接口添加重写策略,请执行以下操作:
添加重写策略encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt")。存在“encrypt_act < !——NeedCopy >
使用Citrix ADC命令接口将重写策略全局绑定:
重写全局encrypt_pol 10类型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…* *连接连接到10.217.24.7(10.217.24.7)端口80 (# 0)> / HTTP / 1.1 > user - agent:旋度/ 7.24.0 (amd64-portbld-freebsd8.4) libcurl / 7.24.0 OpenSSL / 0.9.8y zlib / 1.2.3 >主持人:10.217.24.7 >接受 : \*/\* > data_to_encrypt:现在是时候,男人的灵魂> < HTTP / 1.1 200 OK <日期:星期一,2017年10月09 05:22:37格林尼治时间<服务器:Apache/2.2.24 (FreeBSD) mod_ssl/2.2.24 OpenSSL/0.9.8y DAV/2 <最后修改:Thu, 20 Feb 2014 20:29:06 GMT < ETag: "6bd9f2-2c-4f2dc5b570880" <接受范围:字节< Content-Length: 44 < Content-Type: text/html < encrypted_data:UliegKBJqZd7JdaC49XMLEK1+ eqn2refevypw91gvbvlakm9n9 /C2BKuztS99SE0xQaisidzN5IgeIcpQMn+ cikyvllzpg1ruhgaqhyzit6c8a842da7xe4olv5shwscqkqqz5avrxc3ewtuksna7jolr40alexnnb /DB11pUAE= < *连接#0到主机10.217.24.7完整* close connection #0
使用要加密的相同数据执行此卷命令后续表明每次执行的加密数据是不同的。这是因为填充在要加密的数据开头插入随机字节,导致加密的数据每次都不同。
> curl - v - h”data_to_encrypt:现在是时候,男人的灵魂“http://10.217.24.7/”< encrypted_data: DaOjtl1Pl4DlQKf58MMeL4cFwFvZwhjMqv5aUYM5Iyzk4UpwIYhpRvgTNu2lXEVc1H0tcR1EGC / ViQncLc4EbTurCWLbzjce3 + fknnMmzF0lRT6ZZXWbMvsNFOxDA1SnuAgwxWXy / ooe9Wy6SYsL2oi1sr5wTG + RihDd9zP +好= > curl - v - h”data_to_encrypt:现在是考验人的灵魂的时候了”http://10.217.24.7/…< encrypted_data: eej6YbGP68yHn48qFUvi+fkG+OiO8j3yYLScrRBU+TPQ8WeDVaWnDNAVLvL0ZYHHAU1W2YDRYb+8cdKHLpW36QbI6Q5FfBuWKZSI2hSyUvypTpCoAYcHXFv0ns+tRtg0EPNNj+lyGjKQWtFi6K8IXXISoDy42FblKIlaA7gEriY=
使用GUI进行基于策略的RSA加密
图形用户界面使您能够完成以下任务:
要使用GUI将RSA公钥添加为策略表达式,请执行以下操作:
- 登录Citrix ADC设备,然后导航到配置>AppExpert>高级表达式。
- 在详细信息窗格中,单击添加将RSA公钥定义为高级策略表达式。
- 在“创建表达式”页面中,设置以下参数:
- 表达式名称。高级表达式的名称。
- 表达式。使用表达式编辑器将RSA公钥定义为高级表达式。
- 评论。表达式的简要描述。
- 单击创建。
要使用GUI添加重写操作以加密的HTTP标头请求:
- 登录Citrix ADC设备并导航到配置>AppExpert>重写>操作。
- 在详细信息窗格中,单击添加以添加重写操作。
- 在“创建重写操作“屏幕中,设置以下参数:
- 名称。重写操作的名称。
- 类型。选择操作类型作为INSERT_HTTP_HEADER。
- 使用操作类型插入标头。输入需要重写的HTTP标头的名称。
- 表达式。与操作关联的高级策略表达式的名称。
- 评论。重写操作的简要描述。
- 单击创建。
要使用GUI添加重写高级策略,请执行以下操作:
- 登录Citrix ADC设备并导航到配置>AppExpert>重写>策略。
- 在“重写策略”页面中,单击”添加“以添加重写策略。
- 在“创建重写策略”页面中,设置以下参数:
- 名称。重写策略的名称。
- 操作。如果请求或响应与此重写策略匹配,则要执行的重写操作的名称。
- 日志操作。请求与此策略匹配时要使用的消息日志操作的名称。
- 未定义的结果操作。如果策略评估结果未定义,则应采取的操作。
- 表达式。触发操作的高级策略表达式的名称。
- 评论。重写操作的简要描述。
- 单击创建。
使用GUI绑定全局重写策略:
- 登录Citrix ADC设备并导航到配置>AppExpert>重写>策略。
- 在“重写策略“屏幕中,选择要绑定的重写策略,然后单击”策略管理器"。
- 在“重写策略管理器”页面的“绑定点”部分中,设置以下参数:
- 绑定点。选择绑定点作为默认全局。
- 协议。选择协议类型作为HTTP。
- 连接类型。选择连接类型作为请求。
- 单击继续查看策略绑定部分。
- 在策略绑定部分,选择重写策略并设置绑定参数。
- 单击绑定(绑定)。