OCSP 装订
CRL 和 OCSP 的 NetScaler 实现仅报告客户端证书的吊销状态。要检查 SSL 握手期间收到的服务器证书的吊销状态,客户端必须向证书颁发机构发送请求。
对于流量大的网站,许多客户端会收到相同的服务器证书。如果每个客户端都发送了服务器证书吊销状态的查询,则证书颁发机构将被 OCSP 请求淹没,以检查证书的有效性。
OCSP 装订解决方案
为了避免不必要的拥塞,NetScaler 设备现在支持 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。
NetScaler 设备支持 RFC 6066 中定义的 OCSP 装订。
仅在 NetScaler 设备的前端支持 OCSP 装订。
使用 TLS 1.3 协议时,ADC 设备的行为如下:如果缓存的 OCSP 响应无效(空或已过期),则会向 OCSP 响应程序发送请求,但 SSL 握手在不等待响应的情况下完成。收到响应后,它会被缓存,并可用于来自客户端的未来状态请求。
- NetScaler 对 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 清除缓存状态
- 在 GUI 中,导航到 流量管理 > SSL > 证书 > CA 证书。
- 在详细信息窗格中,选择一个证书。
- 在“选择操作”列表中,选择“清除”。当系统提示确认时,单击“是”。
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 装订
- 导航到 流量管理 > SSL > 虚拟服务器。
- 打开虚拟服务器,然后在 SSL 参数中选择 OCSP 装订。
OCSP 配置
动态或手动添加 OCSP 响应程序以发送 OCSP 装订请求。根据服务器证书中的 OCSP URL 添加服务器证书及其颁发者证书时,会动态添加内部响应程序。从 CLI 或 GUI 中添加了手动 OCSP 响应程序。要发送服务器证书的 OCSP 请求,NetScaler 设备会根据在将 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。 |
请求处理示例:
- 添加虚拟服务器 (VIP1)。
- 添加颁发者证书 (CA1) 并将其绑定到 VIP1。
- 添加三个证书 S1、S2 和 S3。默认情况下,分别创建内部响应程序 resp1、resp2 和 resp3。
- 将 S3 绑定到 VIP1。
- 向 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
- 导航到 流量管理 > SSL > OCSP 响应程序,然后配置 OCSP 响应程序。
- 导航到 流量管理 > SSL > 证书,选择证书,然后在 操作 列表中选择 OCSP 绑定。绑定 OCSP 响应程序。
- 导航到 流量管理 > 负载平衡 > 虚拟服务器,打开虚拟服务器,然后单击证书部分以绑定 CA 证书。
- (可选)选择 OCSP 强制。
注意:
add ssl ocspResponder
和set ssl ocspResponder
命令中的插入客户端证书参数不再有效。也就是说,在配置过程中忽略参数。