-
-
-
高级策略表达式:解析 SSL 证书
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
高级策略表达式:解析 SSL
有用于解析 SSL 证书和 SSL 客户端 Hello 消息的高级策略表达式。
解析 SSL 证书
您可以使用高级策略表达式评估 X.509 安全套接字层 (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 exists"
<!--NeedCopy-->
或者,您可以配置用于检查客户端证书中的特定信息的策略。例如,以下策略验证证书在到期前是否有一天或多天:
add cs policy p2 -rule "client.ssl.client_cert exists && client.ssl.client_cert.days_to_expire.ge(1)"
<!--NeedCopy-->
注意
有关解析证书中的日期和时间的信息,请参阅表达 式中的日期和时间格式和 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 连接调用,则返回 NULL 字符串。 |
CLIENT.SSL.IS_SSL | 如果当前连接是基于 SSL 的,则返回布尔值 TRUE。 |
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 证书操作 | 说明 |
---|---|
<certificate>.EXISTS |
如果客户端具有 SSL 证书,则返回布尔值 TRUE。 |
<certificate>.ISSUER |
以名称值列表的形式返回证书中颁发者的可分辨名称 (DN)。等号 (“=”) 是名称和值的分隔符,斜杠 (“/”) 是分隔名称-值对的分隔符。以下是返回的 DN 的示例: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com
|
<certificate>.ISSUER. IGNORE_EMPTY_ELEMENTS |
返回颁发者并忽略名称-值列表中的空元素。例如,请考虑以下内容:Cert-Issuer: /c=in/st=kar//l=bangelore //o=mycompany/ou=sales/ /emailAddress=myuserid@mycompany.com。根据前面的颁发者定义,以下重写操作返回 6 个计数: sh rewrite action insert_ssl_header Name: insert_ssl Operation: insert_http_header Target:Cert-Issuer Value:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT 。但是,如果您将值更改为以下内容,则返回的计数为 9:CLIENT.SSL.CLIENT_CERT.ISSUER.IGNORE_EMPTY_ELEMENTS.COUNT
|
解析 SSL 客户端您好
您可以通过配置使用以下前缀的表达式来解析 SSL 客户端 hello 消息:
前缀 | 说明 |
---|---|
CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE | 将表达式中提供的十六进制代码与客户端 hello 消息中收到的密码套件的十六进制代码匹配。 |
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION | 在客户端 Hello 消息标头中收到的版本。 |
CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE | 如果客户端或服务器启动会话重新协商,则返回 true。 |
CLIENT.SSL.CLIENT_HELLO.IS_REUSE | 如果设备根据客户端-hello 消息中收到的非零会话 ID 重复使用 SSL 会话,则返回 true。 |
CLIENT.SSL.CLIENT_HELLO.IS_SCSV | 如果信令密码套件值 (SCSV) 功能在客户端 Hello 消息中公布,则返回 true。后备 SCSV 的十六进制代码是 0x5600。 |
CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET | 如果 client-hello 消息中公布了非零长度的会话票证扩展名,则返回 true。 |
CLIENT.SSL.CLIENT_HELLO.LENGTH | 客户端 Hello 消息头中收到的长度。 |
CLIENT.SSL.CLIENT_HELLO.SNI | 返回客户端 hello 消息的“服务器名称”扩展中接收的服务器名称。 |
CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL | 如果客户端 hello 消息中收到的 ALPN 扩展中的应用程序协议与表达式中提供的协议匹配,则返回 true。 |
这些表达式可以在 CLIENTHELLO_REQ 绑定点使用。有关更多信息,请参阅 SSL 策略绑定。
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.