配置基于 SSL 的头插入

由于 Citrix ADC 设备从服务器卸载所有与 SSL 相关的处理,因此服务器仅接收 HTTP 流量。在某些情况下,服务器需要某些 SSL 信息。例如,对最近的 SSL 事务进行安全审核需要在服务器上记录客户端使用者名称(包含在 X509 证书中)。

这些数据可以通过将其作为名称-值对插入到 HTTP 标头中来发送到服务器。如果需要,您可以插入整个客户端证书的哈希(也称为指纹或指纹),或者仅插入证书中的特定字段,例如使用者、序列号、颁发者、签名、SSL 会话 ID、密码套件或者不在日期之前或之后的日期用于确定证书有效性。

只能为基于 HTTP 的 SSL 虚拟服务器和服务启用基于 SSL 的插入。您不能将其应用于基于 TCP 的 SSL 虚拟服务器和服务。此外,必须在 SSL 虚拟服务器上启用客户端身份验证,因为插入的值取自提供给虚拟服务器进行身份验证的客户端证书。

要配置基于 SSL 的标头插入,首先为要插入的每组特定信息创建 SSL 操作,然后创建用于标识要插入信息的连接的策略。创建每个策略时,请指定要与策略关联的操作。然后,将策略绑定到将接收 SSL 流量的 SSL 虚拟服务器。

以下示例使用默认语法策略。在以下示例中,如果收到 URL /testsite/file5.html 的请求,将创建一个控制策略 (ctrl+pol) 来执行客户端身份验证。如果客户端身份验证成功,则创建数据策略 (datapol) 以执行操作 (act1),并添加 SSL 操作 (act1) 以在转发请求之前将证书详细信息和颁发者名称插入请求中。对于其他 URL,禁用客户端身份验证。然后,策略将绑定到接收 SSL 流量的 SSL 虚拟服务器 (ssl_虚拟服务器)。

配置基于 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

使用 GUI 配置基于 SSL 的头插入

  1. 导航到 Traffic Management(流量管理)> SSL > Policies(策略)。

  2. 在详细信息窗格中的“操作”选项卡上,单击“添加”。

  3. 在“创建 SSL 操 作”对话框中,设置以下参数:

    • 姓名*
    • 客户端证书
    • 证书标签
    • 客户端证书颁发者
    • 发行者标签

    * 必填参数

  4. 单击 Create(创建),然后单击 Close(关闭)。

  5. 在选项卡上,单击添加以创建控制策略。

  6. 在“创建 SSL 策略”对话框中,设置以下参数:

    • 姓名*
    • 表达式
    • 请求操作

    * 必填参数

  7. 单击 Create(创建),然后单击 Close(关闭)。

  8. 通过重复步骤 5 到 7 创建数据策略。

  9. 在导航窗格中,展开 SSL Offload(SSL 卸载),然后单击 Virtual Servers(虚拟服务器)。

  10. 在详细信息窗格中,从虚拟服务器列表中,选择要绑定 SSL 策略的虚拟服务器,然后单击“打开”。

  11. 在配置虚拟服务器(SSL 卸载)对话框中,单击 SSL 设置,然后单击 SSL 策略。

  12. 在绑定/取消绑定 SSL 策略对话框中,单击插入策略。在策略名称下,选择您在步骤 5 到 7 中创建的策略。

  13. 单击 OK(确定),然后单击 Close(关闭)。状态栏中显示一条消息,指出已成功绑定策略。

  14. 重复步骤 12 和 13,然后选择您在步骤 8 中创建的策略。

配置 SSL 策略操作以在 HTTP 标头中插入客户端证书指纹

Citrix ADC 设备现在支持将证书的指纹(也称为指纹)插入到发送到后端服务器的请求的标头中。如果启用了客户端身份验证,设备将计算证书的指纹,并使用 SSL 策略操作将指纹插入请求中。服务器搜索指纹,如果存在匹配,则授予安全访问权限。

您必须配置 SSL 操作以启用客户端证书指纹,指定用于插入客户端证书指纹的标头名称,以及用于计算指纹值的摘要(哈希值)。Citrix ADC 设备支持 SHA1 和 SHA2(SHA224、SHA256、SHA384、SHA512)摘要。设备通过计算客户端证书的 D-编码的指定摘要来派生指纹值。然后,创建指定此操作的 SSL 策略,并将策略绑定到 SSL 虚拟服务器。

使用 CLI 配置用于插入客户端证书指纹的 SSL 操作

在命令提示符处键入:

add ssl action <name> -clientCertFingerprint ( ENABLED | DISABLED ) -certFingerprintHeader <string> -certFingerprintDigest <certFingerprintDigest>

参数:

clientCertFingerprint:

将证书的指纹插入到发送到 Web 服务器的请求的 HTTP 标头中。指纹是通过计算客户端证书的 D-编码的指定哈希值(例如 SHA256)得出的。

certFingerprintHeader:

要插入客户端证书指纹的标头的名称。

certFingerprintDigest:

用于计算客户端证书指纹的摘要算法。

可能的数值:SHA1、SHA224、SHA256、SHA384、SHA512

示例:

add ssl action act1 -clientcertfingerprint ENABLED -certfingerprintdigest SHA1 -certfingerprintheader example
Done
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
add ssl policy pol1 -rule true -action act1
Done
bind ssl vserver v1 -policyName pol1 -priority 10
Done
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

通过使用 GUI 配置用于插入客户端证书指纹的 SSL 操作

  1. 导航到 流量管理 > SSL > 策略
  2. 在详细信息窗格中,选择 SSL 操作 选项卡,然后单击 添加
  3. 在“创建 SSL 操 作”对话框中,设置以下参数:
    • 姓名*
    • 客户证书手指打印
    • 指纹标签
    • 指纹摘要 * 必填参数
  4. 单击创建
  5. 选择 SSL 策略 选项卡,然后单击 添加
  6. 在“创建 SSL 策略”对话框中,设置以下参数:
    • 姓名*
    • 操作
    • 表达式 * 必填参数
  7. 单击创建
  8. 导航到 流量管理 > 负载平衡 > 虚拟服务器
  9. 在详细信息窗格中,从 SSL 虚拟服务器列表中,选择要绑定 SSL 策略的虚拟服务器,然后单击“编辑”。
  10. 高级设置中,单击 SSL 策略
  11. 单击下方的 SSL 策略,然后在 策略绑 定对话框中,选择之前创建的策略并分配优先级。
  12. 单击 Bind(绑定)。