Citrix ADC

高级策略表达式:解析ssl

有用于解析SSL证书和SSL客户端你好消息的高级策略表达式。

解析ssl证书架

您可以使用高级策略表达式评估x安全套接字层(SSL)客户端证书。客户端证书是可用于验证用户身份的电子文档。客户端证书包含(至少)版本信息,序列号,签名算法ID,颁发者名称,有效期,使用者(用户)名称,公钥和签名。

您可以检查SSL连接和客户端证书中的数据。例如,您可能希望将使用低强度密码的SSL请求发送到特定负载平衡虚拟服务器场。以下命令是内容切换策略的示例,该策略分析请求中的密码强度并匹配小于或等于 40 的密码强度:

Add cs policy p1 -rule "client.ssl.cipher_bits.le(40)"<!——NeedCopy >

作为另一个示例,您可以配置确定请求是否包含客户端证书的策略:

Add cs policy p2 -rule "client.ssl. "client_cert存在“< !——NeedCopy >

或者,您可以配置用于检查客户端证书中的特定信息的策略。例如,以下策略验证证书在到期前是否有一天或多天:

添加CS策略p2 -rule“client.ssl.client_cert存在&& client.sl.client_cert.days_to_expire.ge(1)”<! -  yourcopy  - >

注意

有关解析证书中的日期和时间的信息,请参阅表达式中的日期和时间格式和SSL证书日期的表达式。

基于文本的SSL和证书数据的前缀

下载描述了用于标识ssl事务和客户端书中基因文本的表达式前缀。

表1.返回ssl和客户端书籍数码的文本布布尔值

前缀 说明
client.ssl.client_cert. 返回当前ssl事务中的ssl客户客户证书。
CLIENT.SSL.CLIENT_CERT.TO_PEM 以二进格式返回ssl客户客户证书。
CLIENT.SSL.CIPHER_EXPORTABLE 如果SSL加密SSL加密密码可导出,则返回布尔值TRUE。
CLIENT.SSL.CIPHER_NAME 如果从SSL连接调用,则返回SSL密码的名称,如果从非SSL连接调用,则返回零字符串。
CLIENT.SSL.IS_SSL 如果当前连接是基于ssl的,则返回布尔兰真实。

SSL证书中数字数据的前缀

下载描述了用于于ssl证书中日期以外的数码数据。这些前缀可与表达式毛的基本作作和数码合运算中描述的操作一起使用

表2。用词评估ssl证书中日期户外的数码数据

前缀 说明
CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIRE 返回证书有效的天数,或者为过期证书返回-1。
CLIENT.SSL.CLIENT_CERT.PK_SIZE 返回证书中使用的公钥的大小。
CLIENT.SSL.CLIENT_CERT.VERSION 返回返回书的版本号。如果如果不是基于ssl的,则返回零(0)。
client.ssl.Cipher_Bits. 返回加密密钥中的位数。如果连接不是基于SSL的,则返回0。
CLIENT.SSL.VERSION 返回表示ssl协议版本的数据,如下所示:0。事务不是基于ssl的。0x002。该事务为sslv2;0x300。该事务是sslv3。0x301。该事务为tlsv1。0x302。该交易是tls 1.1。0x303。该交易是tls 1.2;0x304。交易是tls 1.3。

注意

有关与证书中期间日期期期相关的表达式,请参阅ssl证书日期的表达式。

SSL证书的表达式

您可以通过配置使用以下前缀的表达式来解析SSL证书:

client.ssl.client_cert.

本节讨论可为证书配置的表达式,但检查书记期的表达户外。基本时间的工作时间高度策略策略达式:使用日期,时间和数码中进行了描述。

下表描述了您可以为CLIENT.SSL。CLIENT_CERT前缀指定的操作。

表3.可用Client.SSL.CLIENT_CERT前缀前缀的操作

SSL证书操作 说明
<证书> .Exists 如果客户端具有ssl证书,则返回布尔值真实。
<证书>。探讨 以名称值列表的形式返回证书中颁发者的可分辨名称(DN)。等号(" = ")是名称和值的分隔符,斜杠(“/”)是分隔名称-值对的分隔符。以下是返回的DN的示例:美国/ O / C = = myCompany / OU = www.mycompany.com/CN = www.mycompany.com/emailAddress = myuserid@mycompany.com
<证书> .ISSUER。IGNORE_EMPTY_ELEMENTS 返回批发者并名称 - 值列表中的称。例如,请考虑以下:证书发行人:/ c = in / st = kar // l = bangelore // o = mycompany / ou =销售/ /电子邮件Adddress= myuserid@mycompany.com。根据前面的批发者,以下重写操作用返回6次数:sh重写操作插入_ssl_header名称:INSERT_SSL.操作:insert_http_header目标:Cert-Issuer价值:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT。但是,如果您将值更改为以下内容,则返回的计数为 9:client.ssl.client_cert.issuer.ignore_empty_elements.Count.Count.

解析SSL客户端您好

您可以通话配置使用下载的表达式来解析ssl客户客户你好消息:

前缀 说明
CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE 将表达式中间的十六进制代码代码与端端端你好消息中间的密码套件进制代码代码匹配
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION 在客户端你好消息标头中收到的版本。
client.ssl.client_hello.is_renegotiate. 如果客户端或服务器启动会话重新协商,则返回现实。
client.ssl.client_hello.is_reuse. 如果设备根据根据客户客户客户客户端端消息中收到的非零id重复使使用ssl会议,则返回真实。
client.ssl.client_hello.is_scsv. 如果信令密码套件值(SCSV)功能在客户端你好消息中公布,则返回现实。后备SCSV的十六进制代码x5600是0。
client.ssl.client_hello.is_session_ticket. 如果客户 - 您好消息中公布了非零长度的会话名,则返回真实。
client.ssl.client_hello.length.Length. 客户客户你好消息头中收到的长度。
CLIENT.SSL.CLIENT_HELLO.SNI 返回客户端你好消息的“服务器名称“扩展中接收的服务器名称。
CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL 如果客户端你好消息中间的alpn扩展中的使用程度协议表达式中间的协议匹配,则返回真实。

这些达达式可在ClientHello_Req绑定点使用。有关更多信息,请参阅SSL策略绑定

高级策略表达式:解析ssl