Citrix ADC

OCSP 装订

CRL 和 OCSP 的 Citrix ADC 实现仅报告客户端证书的吊销状态。要检查 SSL 握手期间收到的服务器证书的吊销状态,客户端必须向证书颁发机构发送请求。

对于流量大的网站,许多客户端会收到相同的服务器证书。如果每个客户端都发送了服务器证书吊销状态的查询,则证书颁发机构将被 OCSP 请求淹没,以检查证书的有效性。

OCSP 装订解决方案

为了避免不必要的拥塞,Citrix ADC 设备现在支持 OCSP 装订。也就是说,在 SSL 握手时,设备现在可以在验证 OCSP 响应程序的响应后向客户端发送服务器证书的状态。服务器证书的状态“装订”到设备作为 SSL 握手的一部分发送给客户端的证书。要使用 OCSP 装订功能,必须在 SSL 虚拟服务器上启用该功能,并在设备上添加 OCSP 响应程序。

备注

  • 从版本 13.1-30.x 开始,当满足以下条件时,所有中间证书现在都包含 OCSP 响应扩展:
    • TLS 1.3 protocol is used
    • Client sends a status request

    之前,只有服务器证书在对来自客户端的状态请求的响应中包含此扩展。

  • 使用其他协议(包括 TLS 1.2),服务器仅针对服务器证书发送 OCSP 响应。也就是说, TLS 1.2 协议不支持 RFC 6961。

  • Citrix ADC 设备支持 RFC 6066 中定义的 OCSP 装订。

  • 仅在 Citrix ADC 设备的前端支持 OCSP 装订。

  • 使用 TLS 1.3 协议时,ADC 设备的行为如下:如果缓存的 OCSP 响应无效(空或已过期),则会向 OCSP 响应程序发送请求,但 SSL 握手在不等待响应的情况下完成。收到响应后,它会被缓存,并可用于来自客户端的未来状态请求。

  • Citrix ADC 对 OCSP 装订的支持仅限于使用 TLS 协议版本 1.0 或更高版本的握手。

服务器证书的 OCSP 响应缓存

注意

从版本 13.1-30.x 开始,当使用 TLS 1.3 协议时,将缓存服务器证书和所有中间证书的 OCSP 响应。

在 SSL 握手期间,当客户端请求服务器证书的吊销状态时,设备会首先检查其本地缓存中是否有此证书的条目。如果找到有效的条目,则会对其进行评估,并将服务器证书及其状态显示给客户端。如果找不到吊销状态条目,设备会向 OCSP 响应方发送服务器证书吊销状态的请求。如果收到响应,它会将证书和吊销状态发送给客户端。如果 OCSP 响应中存在下一个更新字段,则响应将缓存配置的时间长度(在超时字段中指定的值)。

注意:从版本 12.1 build 49.x,您甚至可以在超时到期之前从 OCSP 响应程序中清除服务器证书的缓存响应。之前,在配置的超时结束之前,不可能丢弃证书密钥对中的缓存状态。

要使用 CLI 清除缓存状态,请在命令提示符处键入:

clear ssl certKey <certkey name> -ocspstaplingCache
<!--NeedCopy-->

示例

clear ssl certKey s1 -ocspstaplingCache
<!--NeedCopy-->

使用 GUI 清除缓存状态

  1. 在 GUI 中,导航到 流量管理 > SSL > 证书 > CA 证书
  2. 在详细信息窗格中,选择一个证书。
  3. 在“选择操作”列表中,选择“清除”。当系统提示确认时,单击“”。

OCSP 装订配置

配置 OCSP 装订包括启用该功能和配置 OCSP。要配置 OCSP,必须添加 OCSP 响应程序,将 OCSP 响应程序绑定到 CA 证书,然后将证书绑定到 SSL 虚拟服务器。

注意:

仅支持基于 HTTP 的 URL 的 OCSP 响应程序。

使用 CLI 启用 OCSP 装订

在命令提示符下,键入:

set ssl vserver <name> -ocspstapling [ENABLED | DISABLED]
<!--NeedCopy-->

示例:

set ssl vserver vip1 -ocspStapling ENABLED
Done

sh ssl vserver vip1

     Advanced SSL configuration for VServer vip1:
     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: DISABLED
     SSL Redirect: DISABLED
     Non FIPS Ciphers: DISABLED
     SNI: ENABLED
     OCSP Stapling: ENABLED
     SSLv2: DISABLED SSLv3: DISABLED TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED
     Push Encryption Trigger: Always
     Send Close-Notify: YES

     ECC Curve: P_256, P_384, P_224, P_521

    1) CertKey Name: server_certificate1 Server Certificate

    1) Cipher Name: DEFAULT
     Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->

注意: 如果启用默认(增强)配置文件,请使用 set ssl profile <profile name> -ocspStapling [ENABLED | DISABLED] 命令启用或禁用 OCSP。

使用 GUI 启用 OCSP 装订

  1. 导航到 流量管理 > SSL > 虚拟服务器
  2. 打开虚拟服务器,然后在 SSL 参数中选择 OCSP 装订

OCSP 配置

动态或手动添加 OCSP 响应程序以发送 OCSP 装订请求。根据服务器证书中的 OCSP URL 添加服务器证书及其颁发者证书时,会动态添加内部响应程序。从 CLI 或 GUI 中添加了手动 OCSP 响应程序。要发送服务器证书的 OCSP 请求,Citrix ADC 设备会根据在将 OCSP 响应程序绑定到颁发者证书时分配给它的优先级来选择 OCSP 响应程序。如果响应方未能发送 OCSP 装订请求,则会选择优先级次高的响应方发送请求。例如,如果只手动配置了一个响应程序,但该响应程序出现故障,并且存在动态绑定的响应程序,则会选择该响应程序发送 OCSP 请求。

如果 OCSP URL 不是 HTTP,则不会创建内部 OCSP 响应程序。

注意

手动添加的 OCSP 响应程序优先于动态添加的响应程序。

手动创建的 OCSP 响应程序与内部创建的 OCSP 响应程序之间的区别

   
手动创建的 OCSP 响应程序 内部(动态)创建的 OCSP 响应程序
手动创建并明确绑定到优先级的颁发者证书。 默认情况下创建并绑定,同时添加服务器证书及其颁发者证书(CA 证书)。名称以“ns_internal_”开头。
1 到 127 之间的优先级是为配置的响应程序保留的。 优先级从 128 开始自动分配。
可以更改 URL 和批处理深度。 无法更改 URL 和批处理深度。
直接删除。 仅在删除服务器证书或 CA 证书时才删除。
可以绑定到任何 CA 证书。 默认情况下绑定到一个 CA 证书。无法绑定到任何其他 CA 证书。
保存在配置 (ns.conf) 中。 添加命令不会保存在配置中。只保存 set 命令。
如果将三个 OCSP 响应方绑定到优先级分别为 1、2 和 3 的同一颁发者证书,然后取消绑定优先级 2,则其他优先级不会受到影响。 三个 OCSP 响应者将自动绑定到优先级分别为 128、129 和 130 的颁发者证书。如果删除用于创建优先级为 129 的响应程序的服务器证书,则该响应程序将被删除。此外,下一个响应者的优先级(优先级 130)会自动更改为 129。

请求处理示例

  1. 添加虚拟服务器 (VIP1)。
  2. 添加颁发者证书 (CA1) 并将其绑定到 VIP1。
  3. 添加三个证书 S1、S2 和 S3。默认情况下,分别创建内部响应器 resp1、resp2 和 resp3。
  4. 将 S3 绑定到 VIP1。
  5. 向 VIP1 发出请求。已选择响应程序 resp3。

要动态创建内部 OCSP 响应程序,设备需要以下内容:

  • 服务器证书(通常是 CA 证书)颁发者的证书。
  • 服务器证书的证书密钥对。此证书必须包含证书颁发机构提供的 OCSP URL。该 URL 用作动态添加的内部响应程序的名称。

内部 OCSP 响应程序与手动配置的响应程序具有相同的默认值。

注意:

默认情况下,在内部响应程序上禁用缓存。使用 set ssl ocspResponder 命令启用缓存。

使用 CLI 配置 OCSP

在命令提示符下,键入以下命令以配置 OCSP 并验证配置:

add ssl certKey <certkeyName> (-cert <string> [-password]) [-key <string> | -fipsKey <string> | -hsmKey <string>] [-inform <inform>] [-expiryMonitor ( ENABLED | DISABLED ) [-notificationPeriod <positive_integer>]] [-bundle ( YES | NO )]

add ssl ocspResponder <name> -url <URL> [-cache ( ENABLED | DISABLED )[-cacheTimeout <positive_integer>]] [-resptimeout <positive_integer>] [-responderCert <string> | -trustResponder] [-producedAtTimeSkew <positive_integer>][-signingCert <string>][-useNonce ( YES | NO )][ -insertClientCert ( YES | NO )]

bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>]

show ssl ocspResponder [<name>]
<!--NeedCopy-->

参数:

httpMethod:

用于发送 OCSP 请求的 HTTP 方法。对于长度小于 255 字节的请求,您可以配置 HTTP GET 方法来查询 OCSP 服务器。如果您指定了 GET 方法,但长度大于 255 字节,则设备将使用默认方法 (POST)。

可能的值:GET、POST

默认值:POST

ocspUrlResolveTimeout:

等待 OCSP URL 解析的时间(以毫秒为单位)。经过此时间后,将选择具有下一个更高优先级的响应者。如果所有响应程序都失败,则会显示错误消息或断开连接,具体取决于虚拟服务器上的设置。

最小值:100

最大值:2000

示例:

add ssl certkey root_ca1 –cert root_cacert.pem
add ssl ocspResponder ocsp_responder1 -url "http:// www.myCA.org:80/ocsp/" -cache ENABLED -cacheTimeout 30  -resptimeout 100 -responderCert responder_cert -producedAtTimeSkew 300 -signingCert sign_cert  -insertClientCert YES
bind ssl certKey root_ca1 -ocspResponder ocsp_responder1 -priority 1
sh ocspResponder ocsp_responder1
    1)Name: ocsp_responder1
    URL: http://www.myCA.org:80/ocsp/, IP: 192.128.22.22
    Caching: Enabled        Timeout: 30 minutes
    Batching: 8 Timeout: 100 mS
    HTTP Request Timeout: 100mS
    Request Signing Certificate: sign_cert
    Response Verification: Full, Certificate: responder_cert
    ProducedAt Time Skew: 300 s
    Nonce Extension: Enabled
     Client Cert Insertion: Enabled
    Done

show certkey root_ca1
    Name: root_ca1     Status: Valid,   Days to expiration:8907
    Version: 3
    …
    1)  OCSP Responder name: ocsp_responder1     Priority: 1
    Done
<!--NeedCopy-->

使用 CLI 修改 OCSP

您不能修改 OCSP 响应程序的名称,但可以使用 set ssl ocspResponder 命令更改任何其他参数。

在命令提示窗口中,键入以下命令来设置参数并验证配置:

set ssl ocspResponder <name> [-url <URL>] [-cache ( ENABLED | DISABLED)] [-cacheTimeout <positive_integer>]  [-resptimeout <positive_integer>] [ -responderCert <string> | -trustResponder][-producedAtTimeSkew <positive_integer>][-signingCert <string>] [-useNonce ( YES | NO )]

unbind ssl certKey [<certkeyName>] [-ocspResponder <string>]

bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>]

show ssl ocspResponder [<name>]
<!--NeedCopy-->

使用 GUI 配置 OCSP

  1. 导航到 流量管理 > SSL > OCSP 响应程序,然后配置 OCSP 响应程序。
  2. 导航到 流量管理 > SSL > 书,选择证书,然后在 操作 列表中选择 OCSP 绑定绑定 OCSP 响应程序
  3. 导航到 流量管理 > 负载平衡 > 虚拟服务器,打开虚拟服务器,然后单击证书部分以绑定 CA 证书。
  4. (可选)选择 OCSP 强制

注意:

add ssl ocspResponderset ssl ocspResponder 命令中的插入客户端证书参数不再有效。也就是说,在配置过程中忽略参数。