配置基于 SSL 的报头插入
由于 NetScaler 设备会从服务器卸载所有与 SSL 相关的处理,因此服务器仅接收 HTTP 流量。在某些情况下,服务器需要某些 SSL 信息。例如,对最近 SSL 事务的安全审计要求在服务器上记录客户端使用者名称(包含在 X509 证书中)。
这些数据可以通过将其作为名称-值对插入到 HTTP 标头中来发送到服务器。可以执行以下操作之一:
- 如有必要,插入整个客户端证书的哈希(也称为指纹或指纹)整个客户端证书。
- 仅插入证书中的特定字段,例如主题、序列号、颁发者、签名、SSL 会话 ID、密码套件。
- 插入用于确定证书有效性的不在日期或不晚于日期。
只能为基于 HTTP 的 SSL 虚拟服务器和服务启用基于 SSL 的插入。不能将其应用于基于 TCP 的 SSL 虚拟服务器和服务。此外,必须在 SSL 虚拟服务器上启用客户端身份验证,因为插入的值取自提供给虚拟服务器进行身份验证的客户端证书。
要配置基于 SSL 的标头插入,请首先为要插入的每组特定信息创建 SSL 操作,然后创建用于标识要为其插入信息的连接的策略。创建每个策略时,请指定要与策略关联的操作。然后,将策略绑定到接收 SSL 流量的 SSL 虚拟服务器。
以下示例使用高级策略策略。在以下示例中,如果收到 URL /testsite/file5.html 的请求,将创建一个控制策略 (ctrlpol) 来执行客户端身份验证。如果客户端身份验证成功,将创建数据策略 (datapol) 来执行操作 (act1)。添加 SSL 操作 (act1) 以在转发请求之前在请求中插入证书详细信息和颁发者的名称。对于其他 URL,禁用客户端身份验证。然后,这些策略将绑定到接收 SSL 流量的 SSL 虚拟服务器 (ssl_vserver)。
配置基于 SSL 的标头插入的命令行示例
示例:
add ssl action act1 -clientCert ENABLED -certHeader mycert -clientcertissuer ENABLED -certIssuerHeader myissuer
add ssl policy datapol -rule HTTP.REQ.URL.EQ("/testsite/file5.html") -action act1
add ssl policy ctrlpol -rule HTTP.REQ.URL.EQ("/testsite/file5.html") -action CLIENTAUTH
bind ssl vserver ssl_vserver -policyName ctrlpol -priority 1
bind ssl vserver ssl_vserver -policyName datapol -priority 1
Done
<!--NeedCopy-->
使用 GUI 配置基于 SSL 的标头插入
- 
    导航到 Traffic Management(流量管理)> SSL > Policies(策略)。 
- 
    在详细信息窗格中,单击 Actions(操作)选项卡上的 Add(添加)。 
- 
    在“创建 SSL 操作”对话框中,设置以下参数: - 名称*
- 客户端证书
- 证书标签
- 客户证书颁发者
- 发行者标签
 * 必填参数 
- 
    单击“创建”,然后单击“关闭”。 
- 
    在选项卡上,单击 添加 以创建控制策略。 
- 
    在“创建 SSL 策略”对话框中,设置以下参数: - 名称*
- 表达式
- 请求操作
 * 必填参数 
- 
    单击“创建”,然后单击“关闭”。 
- 
    通过重复步骤 5 到 7 创建数据策略。 
- 
    在导航窗格中,展开 SSL Offload(SSL 卸载),然后单击 Virtual Servers(虚拟服务器)。 
- 
    在详细信息窗格中的虚拟服务器列表中,选择要绑定 SSL 策略的虚拟服务器,然后单击 打开。 
- 
    在“配置虚拟服务器(SSL 卸载)”对话框中,单击“SSL 设置”,然后单击“SSL 策略”。 
- 
    在绑定/取消绑定 SSL 策略对话框中,单击 插入策略。在 策略名称下,选择您在步骤 5 至 7 中创建的策略。 
- 
    单击“确定”,然后单击“关闭”。状态栏中将显示一条消息,指出策略已成功绑定。 
- 
    重复步骤 12 和 13,然后选择您在步骤 8 中创建的策略。 
配置用于在 HTTP 标头中插入客户端证书指纹的 SSL 策略操作
NetScaler 设备现在支持将证书的指纹(也称为指纹)插入发送到后端服务器的请求的标头中。如果启用了客户端身份验证,设备将计算证书的指纹,然后使用 SSL 策略操作将指纹插入请求中。服务器搜索指纹,如果存在匹配,则授予安全访问权限。
配置 SSL 操作以启用客户端证书指纹、指定用于插入客户端证书指纹的标头名称以及用于计算指纹值的摘要(哈希值)。NetScaler 设备支持 SHA1 和 SHA2(SHA224、SHA256、SHA384、SHA512)摘要。设备通过计算客户端证书的 DER-Encoding 的指定摘要来获取指纹值。然后,创建一个指定此操作的 SSL 策略,并将该策略绑定到 SSL 虚拟服务器。
使用 CLI 配置用于插入客户端证书指纹的 SSL 操作
在命令提示符下,键入:
add ssl action <name> -clientCertFingerprint ( ENABLED | DISABLED ) -certFingerprintHeader <string> -certFingerprintDigest <certFingerprintDigest>
<!--NeedCopy-->
参数:
客户端证书指纹:
将证书的指纹插入要发送到 Web 服务器的请求的 HTTP 标头中。指纹是通过计算客户端证书的 DER-Encoding 的指定哈希值(例如 SHA256)得出的。
certFingerPrintheader:
要在其中插入客户端证书指纹的标头的名称。
certFingerprint 摘要:
用于计算客户端证书指纹的摘要算法。
可能的值:SHA1、SHA224、SHA256、SHA384、SHA512
示例:
add ssl action act1 -clientcertfingerprint ENABLED -certfingerprintdigest SHA1 -certfingerprintheader example
Done
<!--NeedCopy-->
sh ssl action act1
    1)      Name: act1
            Type: Data Insertion
            Cert Fingerprint Header: ENABLED
            Cert-Fingerprint Tag: example
            Cert-Fingerprint Digest Algorithm: SHA1
            Hits: 0
            Undef Hits: 0
            Action Reference Count: 0
Done
<!--NeedCopy-->
add ssl policy pol1 -rule true -action act1
Done
<!--NeedCopy-->
bind ssl vserver v1 -policyName pol1 -priority 10
Done
<!--NeedCopy-->
sh ssl vserver v1
            Advanced SSL configuration for VServer v1:
            DH: DISABLED
            DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED          Refresh Count: 0
            Session Reuse: ENABLED          Timeout: 120 seconds
            Cipher Redirect: DISABLED
            SSLv2 Redirect: DISABLED
            ClearText Port: 0
            Client Auth: ENABLED    Client Cert Required: Mandatory
            SSL Redirect: DISABLED
            Non FIPS Ciphers: DISABLED
            SNI: DISABLED
            OCSP Stapling: DISABLED
            SSLv2: DISABLED SSLv3: DISABLED TLSv1.0: DISABLED  TLSv1.1: ENABLED  TLSv1.2: DISABLED
            Push Encryption Trigger: Always
            Send Close-Notify: YES
            ECC Curve: P_256, P_384, P_224, P_521
    1)      CertKey Name: intca6    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
    2)      CertKey Name: intca5    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
    3)      CertKey Name: intca4    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
    4)      CertKey Name: intca3    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
    5)      CertKey Name: intca2    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
    6)      CertKey Name: intca1    CA Certificate          CRLCheck: Mandatory             CA_Name Sent
            Data policy
    1)      Policy Name: pol1       Priority: 10
    1)      Cipher Name: DEFAULT
            Description: Default cipher list with encryption strength >= 128bit
    Done
<!--NeedCopy-->
通过使用 GUI 配置用于插入客户端证书指纹的 SSL 操作
- 导航到 流量管理 > SSL > 策略。
- 在详细信息窗格中,选择 SSL 操作 选项卡,然后单击 添加 。
- 在“创建 SSL 操作”对话框中,设置以下参数:
    - 姓名*
- 客户证书指纹
- 指纹标签
- 指纹摘 要 * 必填参数
 
- 单击创建。
- 选择 SSL 策略 选项卡,然后单击 添加。
- 在“创建 SSL 策略”对话框中,设置以下参数:
    - 名称*
- 操作
- 表达式 *A 必填参数
 
- 单击创建。
- 导航到 流量管理 > 负载平衡 > 虚拟服务器。
- 在详细信息窗格中,从 SSL 虚拟服务器列表中,选择要绑定 SSL 策略的虚拟服务器,然后单击“编辑”。
- 在 高级设置中,单击 SSL 策略。
- 单击下面的 SSL 策略,然后在 策略绑定 对话框中,选择之前创建的策略并分配优先级。
- 单击绑定。