Citrix ADC

SSL 配置文件基础结构

SSLv3 和 RC4 实施中的漏洞强调需要使用最新的密码和协议来协商网络连接的安全设置。对配置实施任何更改(例如在数千个 SSL 端点禁用 SSLv3)是一个繁琐的过程。因此,作为 SSL 端点配置一部分的设置已被移动到 SSL 配置文件以及默认密码。要在配置中实现更改(包括密码支持),您只需修改绑定到实体的配置文件。

默认前端和默认后端 SSL 配置文件包含所有默认密码和 ECC 曲线,以及作为旧配置文件一部分的设置。附录中提供了默认配置文件的示例输出。“启用默认配置文件”操作会自动将默认前端配置文件绑定到所有前端实体,并将默认后端配置文件绑定到所有后端实体。您可以修改默认配置文件以适应您的部署。您还可以创建自定义配置文件并将其绑定到 SSL 实体。

前端配置文件包含适用于前端实体的参数。也就是说,它们适用于接收来自客户端的请求的实体。通常,此实体是 Citrix ADC 设备上的 SSL 虚拟服务器或透明 SSL 服务。后端配置文件包含适用于后端实体的参数。也就是说,它们适用于将客户端请求发送到后端服务器的 ADC 设备上的实体。通常,此实体是 Citrix ADC 设备上的 SSL 服务。如果您尝试配置不受支持的参数,则会出现 ERROR: Specified parameters are not applicable for this type of SSL profile 错误。

重要:

升级后,如果启用默认配置文件,则无法撤消更改。也就是说,无法禁用配置文件。在启用配置文件之前,保存配置并创建配置文件 (ns.conf) 的副本。但是,如果您不想使用默认配置文件中的功能,则可以继续使用旧的 SSL 配置文件。有关这些配置文件的更多信息,请参阅旧版 SSL 配置文件

从 11.1 51.x 版中的 GUI 和 CLI 中,当您启用默认配置文件时,会添加一个确认提示,以防止错误启用它。

命令:

set ssl parameter -defaultProfile ENABLED
    Save your configuration before enabling the Default profile. You cannot undo the changes. Are you sure you want to enable the Default profile? [Y/N]Y
Done

默认情况下,某些 SSL 参数(称为 全局参数)应用于所有 SSL 端点。但是,如果配置文件绑定到 SSL 端点,则全局参数不适用。配置文件中指定的设置改为适用。

注意事项

  1. 一个配置文件可以绑定到多个虚拟服务器,但一个虚拟服务器只能绑定一个配置文件。
  2. 若要删除绑定到虚拟服务器的配置文件,请先取消绑定该配置文件。
  3. 密码或密码组可以以不同的优先级绑定到多个配置文件。
  4. 一个配置文件可以有多个密码和密码组绑定在不同的优先级。
  5. 对密码组的更改将立即反映在所有配置文件以及其中一个配置文件绑定到的所有虚拟服务器中。
  6. 如果密码套件是密码组的一部分,请在从配置文件中删除密码套件之前编辑密码组以删除该密码套件。
  7. 如果您没有为附加到配置文件的密码套件或密码组分配优先级,则会为其分配配置文件中的最低优先级。
  8. 您可以从现有密码组和密码套件创建自定义密码组(也称为用户定义的密码组)。如果您创建密码组 A 并向其添加现有密码组 X 和 Y,则按照该顺序,Y 的优先级将低于 X。也就是说,首先添加的组具有更高的优先级。
  9. 如果密码套件是连接到同一配置文件的两个密码组的一部分,则不会将该密码套件添加为第二个密码组的一部分。处理流量时,优先级较高的密码套件将生效。
  10. 密码组不会在配置文件中展开。因此,配置文件 (ns.conf) 中的行数大大减少。例如,如果两个包含 15 个密码的密码组绑定到一千个 SSL 虚拟服务器,扩展将在配置文件中添加 30*1000 个密码相关的条目。对于新配置文件,它将只有两个条目:绑定到配置文件的每个密码组一个条目。
  11. 从现有密码和密码组创建用户定义的密码组是一种复制粘贴操作。原始组中的任何更改都不会反映在新组中。
  12. 用户定义的密码组列出了它所属的所有配置文件。
  13. 配置文件列出了绑定到的所有 SSL 虚拟服务器、服务和服务组。
  14. 如果启用了默认 SSL 配置文件功能,请使用该配置文件设置或更改 SSL 实体的任何属性。例如,虚拟服务器、服务、服务组或内部服务。

使用 CLI 保存配置

在命令提示窗口中,键入:

save config

shell

root@ns# cd /nsconfig

root@ns# cp ns.conf ns.conf.NS<currentreleasenumber><currentbuildnumber>

示例:

save config
shell
root@ns# cd /nsconfig
root@ns# cp ns.conf ns.conf.NS.11.0.jun.16

启用默认配置文件

重要:

在升级软件之前保存配置并启用默认配置文件。

从版本 11.1 版本 51.x 中的 GUI 和 CLI 中,当您启用默认配置文件时,将显示确认提示,以避免错误启用它。

命令: 以下命令启用默认配置文件,并将此配置文件绑定到配置文件已绑定到的 SSL 实体。也就是说,如果配置文件(例如 P1)已绑定到 SSL 实体,P1 将被默认前端配置文件或默认后端配置文件替换。不会删除旧的配置文件 (P1)。它现在是一个增强型 SSL 配置文件,并包含较早的设置,以及密码和 ECC 曲线。如果您不需要默认配置文件,则可以显式地将 P1 绑定到 SSL 实体。

set ssl parameter -defaultProfile ENABLED
    Save your configuration before enabling the Default profile. You cannot undo the changes. Are you sure you want to enable the Default profile? [Y/N]Y
Done

将软件升级到支持增强型配置文件基础结构的构建,然后启用默认配置文件。

备注:

  • 如果早期配置文件 (P1) 已绑定到 SSL 实体,并且您启用了默认配置文件,则默认配置文件将覆盖早期的绑定。也就是说,默认配置文件绑定到 SSL 实体。如果您不希望绑定默认配置文件,则必须再次将 P1 绑定到 SSL 实体。

  • 单个操作(启用默认配置文件或set ssl parameter -defaultProfile ENABLED)启用(绑定)默认前端配置文件和默认后端配置文件。

用例

启用默认配置文件后,它们将绑定到所有 SSL 端点。默认配置文件是可编辑的。如果您的部署使用了大多数默认设置并且仅更改了少数参数,则可以编辑默认配置文件。这些更改会立即反映在所有终点上。您还可以使用一些自定义参数和一些默认参数创建自定义 SSL 配置文件,并将其绑定到 SSL 实体。

下面的流程图说明了您必须执行的步骤:

SSL 配置文件用例 1

  1. 有关升级软件的信息,请参阅升级系统软件

  2. 使用 CLI 或 GUI 启用默认配置文件。

  • 在命令行中,键入:set ssl parameter -defaultProfile ENABLED
  • 如果您希望使用 GUI,请导航至 流量管理 > SSL > 更改高级 SSL设置,向下滚动,然后选择 启用默认配置文件

如果在升级之前配置文件未绑定到终点,则默认配置文件将绑定到 SSL 终点。如果某个配置文件在升级之前绑定到终点,则该配置文件将在升级之后绑定,并将默认密码添加到配置文件中。

  1. (可选)手动更改默认配置文件中的任何设置。
  • 在命令行中,键入:set ssl profile <name> 后跟要修改的参数。
  • 如果您希望使用 GUI,请导航到系统 > 配置文件。在 SSL 配置文件中,选择一个配置文件,然后单击 编辑

SSL 配置文件参数

您可以在 SSL 配置文件中设置以下 SSL 参数。您可以在 SSL 虚拟服务器中设置其中一些参数。有关 SSL 虚拟服务器参数的更多信息,请参阅SSL 虚拟服务器参数

支持 Citrix ADC 设备后端的安全重新协商

注意: 此参数在 13.0 版本 58.x 及更高版本中引入。在早期版本和版本中,后端只支持非安全的重新协商。

以下平台支持该功能:

  • VPX
  • 包含 N2 或 N3 芯片的 MPX 平台
  • 基于 Intel Coleto SSL 芯片的平台

FIPS 平台尚不支持此功能。

默认情况下,ADC 设备的后端拒绝安全重新协商。也就是说,denySSLReneg 参数设置为“全部”(默认值)。

要允许在后端进行安全重新协商,请从以下 denySSLReneg 参数设置之一中进行选择:

  • FRONTEND_CLIENT
  • FRONTEND_CLIENTSERVER
  • NONSECURE

使用 CLI 启用安全重新协商

在命令提示窗口中,键入:

set ssl profile <name> -denySSLReneg <denySSLReneg>

示例:

set ssl profile ns_default_ssl_profile_backend -denySSLReneg NONSECURE
 Done

sh ssl profile ns_default_ssl_profile_backend
1)  Name: ns_default_ssl_profile_backend    (Back-End)
    SSLv3: DISABLED TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Server Auth: DISABLED
    Use only bound CA certificates: DISABLED
    Strict CA checks:       NO
    Session Reuse: ENABLED      Timeout: 300 seconds
    DH: DISABLED
    Ephemeral RSA: DISABLED
    Deny SSL Renegotiation      NONSECURE
    Non FIPS Ciphers: DISABLED
    Cipher Redirect: DISABLED
    SSL Redirect: DISABLED
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Push Encryption Trigger: Always
    PUSH encryption trigger timeout:    1 ms
    SNI: DISABLED
    OCSP Stapling: DISABLED
    Strict Host Header check for SNI enabled SSL sessions:      NO
    Push flag:  0x0 (Auto)
    SSL quantum size:       8 kB
    Encryption trigger timeout  100 mS
    Encryption trigger packet count:    45

    ECC Curve: P_256, P_384, P_224, P_521

1)  Cipher Name: DEFAULT_BACKEND        Priority :2
    Description: Predefined Cipher Alias

1)  Service Name: s187
 Done

使用 GUI 启用安全重新协商

  1. 导航到 系统 > 配置文件 > SSL 配置文件
  2. 添加或编辑配置文件。
  3. 拒绝 SSL 重新协商设置为“全部”以外的任何值。

    后端安全重新协商 SSL 配置文件

主机标头验证

注意: 此参数在 13.0 版本 52.x 中引入。

使用 HTTP/1.1,客户端必须使用多个连接来处理多个请求。使用 HTTP/2,客户端可以跨同一证书覆盖的域重复使用连接。要适应此更改,对于启用 SNI 的会话,ADC 设备必须能够控制 HTTP 主机报头的验证方式。在早期版本中,如果参数已启用(设置为“Yes”)且请求未包含启用 SNI 的会话的主机标头,则设备将丢弃请求。如果该参数被禁用(设置为“否”),则设备将不执行验证。将向 SSL 配置文件和 SSL 全局参数添加一个新参数 SNIHTTPHostMatch,以便更好地控制此验证。此参数可以采用三个值:CERT、严格和无。这些值仅适用于启用 SNI 的会话。必须在 SSL 虚拟服务器或绑定到虚拟服务器的配置文件上启用 SNI,并且 HTTP 请求必须包含主机标头。

  • CERT- 如果请求中的主机头值包含在用于建立此 SSL 会话的证书中,则会转发连接。
  • 严格-仅当请求中的主机标头值与 SSL 连接的客户端 Hello 消息中传递的服务器名称值完全匹配时,才转发连接。
  • 否-未验证主机标头值。

可能的值:NO、CERT、STRICT 默认值:CERT

随着新参数 SNIHTTPHostMatch 的引入,dropReqWithNoHostHeader 参数的行为发生了变化。dropReqWithNoHostHeader 参数的设置不再影响根据 SNI 证书验证主机标头的方式。

使用 CLI 设置设置 SSL 配置文件参数

在命令提示窗口中,键入:

set ssl profile <name> [-ssllogProfile <string>] [-dh ( ENABLED | DISABLED ) -dhFile <string>] [-dhCount <positive_integer>][-dhKeyExpSizeLimit ( ENABLED | DISABLED )] [-eRSA ( ENABLED | DISABLED) [-eRSACount <positive_integer>]] [-sessReuse ( ENABLED | DISABLED )
[-sessTimeout <positive_integer>]] [-cipherRedirect ( ENABLED | DISABLED ) [-cipherURL <URL>]] [-clientAuth ( ENABLED | DISABLED )[-clientCert ( Mandatory | Optional )]] [-sslRedirect ( ENABLED |
DISABLED )] [-redirectPortRewrite ( ENABLED | DISABLED )] [-ssl3 (ENABLED | DISABLED )] [-tls1 ( ENABLED | DISABLED )] [-tls11 ( ENABLED| DISABLED )] [-tls12 ( ENABLED | DISABLED )] [-tls13 ( ENABLED |DISABLED )] [-SNIEnable ( ENABLED | DISABLED )] [-ocspStapling (ENABLED | DISABLED )] [-serverAuth ( ENABLED | DISABLED )] [-commonName <string>] [-pushEncTrigger <pushEncTrigger>] [-sendCloseNotify ( YES |
NO )] [-clearTextPort <port|*>] [-insertionEncoding ( Unicode | UTF-8)] [-denySSLReneg <denySSLReneg>] [-quantumSize <quantumSize>]
[-strictCAChecks ( YES | NO )] [-encryptTriggerPktCount <positive_integer>] [-pushFlag <positive_integer>][-dropReqWithNoHostHeader ( YES | NO )] [-SNIHTTPHostMatch <SNIHTTPHostMatch>] [-pushEncTriggerTimeout <positive_integer>]
[-sslTriggerTimeout <positive_integer>] [-clientAuthUseBoundCAChain (ENABLED | DISABLED )] [-sslInterception ( ENABLED | DISABLED )][-ssliReneg ( ENABLED | DISABLED )] [-ssliOCSPCheck ( ENABLED | DISABLED )] [-ssliMaxSessPerServer <positive_integer>] [-HSTS ( ENABLED| DISABLED )] [-maxage <positive_integer>] [-IncludeSubdomains ( YES | NO )] [-preload ( YES | NO )] [-sessionTicket ( ENABLED | DISABLED )][-sessionTicketLifeTime <positive_integer>] [-sessionTicketKeyRefresh (ENABLED | DISABLED )] {-sessionTicketKeyData } [-sessionKeyLifeTime <positive_integer>] [-prevSessionKeyLifeTime <positive_integer>]
[-cipherName <string> -cipherPriority <positive_integer>][-strictSigDigestCheck ( ENABLED | DISABLED )]
[-skipClientCertPolicyCheck ( ENABLED | DISABLED )] [-zeroRttEarlyData ( ENABLED | DISABLED )] [-tls13SessionTicketsPerAuthContext
<positive_integer>] [-dheKeyExchangeWithPsk ( YES | NO )]

TLS 会话票证扩展

SSL 握手是 CPU 密集型操作。如果启用了会话重用,则会跳过现有客户端的服务器/客户端密钥交换操作。允许他们继续开会。此操作可以缩短响应时间,并增加服务器可以支持的每秒 SSL 事务数。但是,服务器必须存储每个会话状态的详细信息,这会消耗内存,并且如果请求在服务器之间进行负载均衡,则很难在多个服务器之间共享。

Citrix ADC 设备支持 SessionTicket TLS 扩展。使用此扩展表明会话详细信息存储在客户端而不是服务器上。客户端必须通过在客户端 Hello 消息中包含会话票证 TLS 扩展来表明它支持此机制。对于新客户端,此扩展名为空。服务器在 NewSessionTicket 握手消息中发送一个新的会话票证。会话票证是通过使用仅服务器知道的密钥对加密的。如果服务器现在无法发出新票证,它将完成常规握手。

此功能仅在前端 SSL 配置文件中可用,并且仅在设备充当服务器并生成会话票证的通信前端可用。

限制

  • FIPS 平台不支持此功能。
  • 此功能仅支持 TLS 版本 1.1 和 1.2 版本。
  • 会话票证不支持 SSL 会话 ID 持久性。

使用 CLI 启用 TLS 会话票证扩展

在命令提示窗口中,键入:

set ssl profile <name> -sessionTicket (ENABLED | DISABLED ) [-sessionTicketLifeTime <positive_integer>

参数:

sessionTicket: TLS 会话票证扩展状态。使用此扩展表明会话详细信息存储在客户端而不是服务器上,如 RFC 5077 中所定义。

可能的值:ENABLED、DISABLED

默认值: DISABLED

sessionTicketLifeTime:指定一个时间(以秒为单位),在此时间之后,会话工单过期并必须启动新的 SSL 握手。

默认值:300

最小值:0

最大值:172800

示例:

add ssl profile profile1 -sessionTicket ENABLED -sessionTicketlifeTime 300
Done

通过使用 GUI 启用 TLS 会话票证扩展

  1. 导航到系统 > 配置文件。选择 SSL 配置文件
  2. 单击添加并为配置文件指定名称。
  3. 选择 会话工单
  4. 或者,指定 会话票证生命周期 (秒)

会话票证的安全实施

通过使用 TLS 会话票证,客户端可以使用缩写的握手来更快地重新连接到服务器。但是,如果会话票证长时间未加密或更改,它们可能会带来安全风险。您可以通过使用对称密钥对会话票证进行加密来保护它们。要实现向前保密,您可以指定刷新会话工单密钥的时间间隔。

默认情况下,设备会生成会话票证密钥。但是,如果部署中的多台设备需要解密彼此的会话票证,则它们必须使用相同的会话票证密钥。因此,必须在所有设备上手动设置(添加或加载)相同的会话票证密钥数据。会话工单密钥数据包括以下信息:

  • 会话票据名称。
  • 用于加密或解密 TT 的会话 AES 密钥。
  • 用于计算工单摘要的会话 HMAC 密钥。

您现在可以根据 RFC 5077 中的建议配置长度为 64 字节的会话票证密钥数据以支持 256 位 HMAC 密钥。还支持 48 字节的密钥长度以实现向后兼容。

注意:

手动键入会话票证密钥数据时,请确保 HA 设置或群集设置中所有 Citrix ADC 设备的配置相同。

sessionTicketKeyLifeTime`` 参数指定刷新会话票证密钥的频率。您可以设置prevSessionTicketKeyLifeTime 参数以指定在生成新密钥后使用该密钥解密工单时使用先前的会话工单密钥维护多长时间。该prevSessionTicketKeyLifeTime 设置延长了客户端可以使用缩写握手重新连接的时间。例如,如果设置sessionTicketKeyLifeTime 为 10 分钟,设置prevSessionTicketKeyLifeTime 为 5 分钟,则会在 10 分钟后生成一个新密钥,并将其用于所有新会话。但是,以前连接的客户端还有 5 分钟的时间,以前签发的票据可以用于缩写握手。

使用 CLI 配置 SSL 会话票证数据

在命令提示窗口中,键入:

set ssl profile <name> -sessionTicket ENABLED -sessionTicketLifeTime <positive_integer> -sessionTicketKeyRefresh ( ENABLED | DISABLED )] -sessionTicketKeyLifeTime <positive_integer> [-prevSessionTicketKeyLifeTime <positive_integer>]

参数:

sessionTicket:使用 RFC 5077 所述的会话票证。建立初始握手需要 CPU 密集型公钥加密操作。使用ENABLED 用”设置,服务器会向客户端发出会话票证,客户端可以使用该票证执行缩写握手。

可能的值:已启用,已禁用。默认值:DISABLED

sessionTicketLifeTime:会话票据的生命周期(以秒为单位)。在此时间过期后,客户端无法使用此 TT 恢复其会话。

最大值:172800。最小值:0。默认值:300。

sessionTicketKeyRefresh:当会话票证密钥生命周期参数指定的时间过期时,重新生成用于加密或解密会话票证的会话票证密钥。如果启用了 sessionTicket,则自动启用。如果管理员输入会话票证数据,则禁用。

可能的值:已启用,已禁用。默认值:ENABLED

sessionKeyLifeTime:用于加密 Citrix ADC 设备发出的会话票证的对称密钥的生命周期(以秒为单位)。

最大值:86400。最低值:600。默认值:3000

prevSessionKeyLifeTime:在会话票证密钥生命周期过期后,用于加密会话票证的上一个对称密钥对现有客户端仍然有效的时间(以秒为单位)。在此时间内,现有客户端可以使用之前的会话工单密钥恢复其会话。使用新密钥对新客户端的会话票证进行加密。

最大值:172800。最小值:0。默认值:0

示例:

set ssl profile ns_default_ssl_profile_frontend -sessionTicket ENABLED -sessionTicketlifeTime 120 -sessionTicketKeyRefresh ENABLED -sessionTicketKeyLifeTime 100 -prevSessionTicketKeyLifeTime 60

Done

show ssl profile ns_default_ssl_profile_frontend

    Session Ticket: ENABLED
    Session Ticket Lifetime: 120 (secs)
    Session Key Auto Refresh: ENABLED
    Session Key Lifetime: 100 (secs)
    Previous Session Key Lifetime: 60 (secs)

使用 GUI 配置 SSL 会话票证数据

  1. 导航到系统 > 配置文件,然后选择SSL 配置文件

  2. 选择 ns_default_ssl_profile_frontend 并单击 编辑

  3. 基本设置部分,单击铅笔图标并设置以下参数:

    • 会话票据
    • 会话票据生命周期(秒)
    • 会话票证密钥自动刷新
    • 会话票证密钥生命周期(秒)
    • 上次会话票证密钥生命周期 (秒)
  4. 单击确定

使用 CLI 手动键入 SSL 会话票证数据

在命令提示窗口中,键入:

set ssl profile <name> -sessionTicket ENABLED

set ssl profile <name> -sessionTicketKeyData

show ssl profile ns_default_ssl_profile_frontend

参数:

sessionTicket:使用 RFC 5077 所述的会话票证。建立初始握手需要 CPU 密集型公钥加密操作。使用ENABLED 用”设置,服务器会向客户端发出会话票证,客户端可以使用该票证执行缩写握手。

可能的值:已启用,已禁用。默认值:DISABLED

sessionTicketKeyData:包含会话票证名称(0—15 字节)、用于加密或解密会话票证的会话 AES 密钥(16—31 字节)以及用于计算票证摘要的会话 HMAC 密钥(32—63 字节)。由管理员在外部生成并添加到 Citrix ADC 设备。

最大长度:64 字节

示例:

set ssl profile ns_default_ssl_profile_frontend -sessionTicket ENABLED

Done

set ssl profile ns_default_ssl_profile_frontend -sessionTicketKeyData 111111111111111111111111111111111111111111111111

Done

show ssl profile ns_default_ssl_profile_frontend

    1) Name: ns_default_ssl_profile_frontend (Front-End)
    SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
    Client Auth: DISABLED
    Use only bound CA certificates: DISABLED
    Strict CA checks: NO
    Session Reuse: ENABLED Timeout: 120 seconds
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
    Deny SSL Renegotiation ALL
    Non FIPS Ciphers: DISABLED
    Cipher Redirect: DISABLED
    SSL Redirect: DISABLED
    Send Close-Notify: YES
    Push Encryption Trigger: Always
    PUSH encryption trigger timeout: 1 ms
    SNI: DISABLED
    OCSP Stapling: DISABLED
    Strict Host Header check for SNI enabled SSL sessions: NO
    Push flag: 0x0 (Auto)
    SSL quantum size: 8 kB
    Encryption trigger timeout 100 mS
    Encryption trigger packet count: 45
    Subject/Issuer Name Insertion Format: Unicode
    Session Ticket: ENABLED
    Session Ticket Lifetime: 300 (secs)
    Session Key Auto Refresh: DISABLED
    Session Key Lifetime: 3000 (secs)
    Previous Session Key Lifetime: 0 (secs)
    Session Key Data: 84dad1afc6d56b0deeb0a7fd7f299a207e8d8c15cdd087a5684a11a329fd732e87a0535d90883
    47e8c181ba266f5c8838ae472cb3ab9255b683bf922fad32cee816c329989ef7cdeb278e93ac37882e3

    ECC Curve: P_256, P_384, P_224, P_521

    1) Cipher Name: DEFAULT Priority :4
    Description: Predefined Cipher Alias

    1) Internal Service Name (Front-End): nsrnatsip-127.0.0.1-5061
    2) Internal Service Name (Front-End): nskrpcs-127.0.0.1-3009
    3) Internal Service Name (Front-End): nshttps-::1l-443
    4) Internal Service Name (Front-End): nsrpcs-::1l-3008
    5) Internal Service Name (Front-End): nshttps-127.0.0.1-443
    6) Internal Service Name (Front-End): nsrpcs-127.0.0.1-3008
    7) Vserver Name: v1

Done

使用 GUI 手动键入 SSL 会话票证数据

  1. 导航到系统 > 配置文件,然后选择SSL 配置文件

  2. 选择 ns_default_ssl_profile_frontend 并单击 编辑

  3. 基本设置部分,单击铅笔图标并设置以下参数:

    • 会话票据
    • 会话票据关键数据
    • 确认会话票据关键数据
  4. 单击确定

在 Citrix ADC 非 FIPS 平台上支持 SSL 握手的扩展主机密

注意: 此参数在 13.0 版本 61.x 中引入。

扩展主机密 (EMS) 是传输层安全性 (TLS) 协议的可选扩展。要在 Citrix ADC 设备上支持 EMS,将添加一个适用于前端和后端 SSL 配置文件的新参数。如果启用了参数并且对等方支持 EMS,则 ADC 设备将使用 EMS 计算。如果对等方不支持 EMS,则即使在设备上启用了参数,也不会将 EMS 计算用于连接。有关 EMS 的更多信息,请参阅 RFC 7627。

注意: 扩展主机密仅适用于使用 TLS 协议版本 1.0、1.1 或 1.2 的握手。

EMS 平台支持

  • MPX 和 SDX 平台包含 Cavium N3 芯片或 Intel Coleto Creek 加密卡。以下平台随 Intel Coleto 芯片一起提供:
  • MPX 5900
  • MPX/SDX 8900
  • MPX/SDX 26000
  • MPX/SDX 26000-50S
  • MPS/SDX 26000-100G
  • MPX/SDX 15000-50G

您还可以使用“显示硬件”命令来识别您的设备是否具有 Cole (COL) 或 N3 芯片。

  • MPX 和 SDX 平台没有加密卡(仅软件)。

  • 仅软件平台:VPX、CPX 和 BLX。

无法在以下平台上启用 EMS:

  • MPX 9700 FIPS 和 MPX 14000 FIPS 平台。

  • MPX 和 SDX 平台包含 Cavium N2 加密芯片。

如果启用了该参数,则 ADC 设备将尝试在 TLS 1.2、TLS 1.1 和 TLS 1.0 连接中使用 EMS。该设置不会影响 TLS 1.3 或 SSLv3 连接。

要允许与对等方协商 EMS,请启用绑定到虚拟服务器(前端)或服务(后端)的 SSL 配置文件上的设置。

使用 CLI 启用扩展主机密

在命令提示窗口中,键入:

set ssl profile <profile name> [-allowExtendedMasterSecret (YES | NO)]

示例

set ssl profile ns_default_ssl_profile_frontend  -allowExtendedMasterSecret YES

set ssl profile ns_default_ssl_profile_backend  -allowExtendedMasterSecret YES

下表显示了不同默认配置文件和用户定义配置文件上 allowExtendedMasterSecret 参数的默认值。

配置文件 默认设置
默认前端配置文件
默认前端安全配置文件
默认后端配置文件
用户定义配置

使用 GUI 启用扩展主机密

  1. 导航到 系统 > 配置文件 > SSL 配置文件
  2. 添加配置文件或编辑配置文件。
  3. 允许扩展主密钥设置为“YES”。

    扩展主机密

支持处理客户端 hello 消息中的 ALPN 扩展

注意:13.0 版本 61.x 及更高版本支持此功能。

要协商由 SSL_TCP 虚拟服务器处理的连接的 ALPN 扩展中的应用程序协议,将向前端 SSL 配置文件添加一个参数 alpnProtocol 。如果在客户端 hello 消息的 ALPN 扩展中收到相同的协议,则仅协商在 SSL 配置文件中指定的协议。

注意: alpnProtocol 参数仅在前端 SSL 配置文件上受支持,并且适用于 SSL_TCP 类型虚拟服务器处理的 SSL 连接。

使用 CLI 在前端 SSL 配置文件中设置协议

在命令提示窗口中,键入:

set ssl profile ns_default_ssl_profile_frontend -alpnProtocol <protocol_name>

alpnProtocol 参数可以采用三个值。最大长度:4096 字节。

  • 无: 未进行应用程序协商。这是默认设置。
  • HTTP1: HTTP1 可以作为应用程序协议进行协商。
  • HTTP2: HTTP2 可以作为应用程序协议进行协商。

示例:

set ssl profile ns_default_ssl_profile_frontend -ALPNProtocol HTTP2
> sh ssl profile ns_default_ssl_profile_frontend
1)  Name: ns_default_ssl_profile_frontend   (Front-End)
    SSLv3: DISABLED TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Client Auth: DISABLED
    Use only bound CA certificates: DISABLED
    Strict CA checks:   NO
    Session Reuse: ENABLED  Timeout: 120 seconds
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Deny SSL Renegotiation  ALL
    Non FIPS Ciphers: DISABLED
    Cipher Redirect: DISABLED
    SSL Redirect: DISABLED
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1
    Push Encryption Trigger: Always
    PUSH encryption trigger timeout:    1 ms
    SNI: DISABLED
    OCSP Stapling: DISABLED
    Strict Host Header check for SNI enabled SSL sessions:  NO
    Match HTTP Host header with SNI:    CERT
    Push flag:  0x0 (Auto)
    SSL quantum size:   8 kB
    Encryption trigger timeout  100 mS
    Encryption trigger packet count:    45
    Subject/Issuer Name Insertion Format:   Unicode

    SSL Interception: DISABLED
    SSL Interception OCSP Check: ENABLED
    SSL Interception End to End Renegotiation: ENABLED
    SSL Interception Maximum Reuse Sessions per Server: 10
    Session Ticket: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    Allow Extended Master Secret: NO
    Send ALPN Protocol: HTTP2

 Done

使用 GUI 在前端 SSL 配置文件中设置协议

  1. 导航到系统 > 配置文件,然后选择SSL 配置文件

  2. 选择 ns_default_ssl_profile_frontend 并单击 编辑

  3. 阿尔卑斯网络协议列表中,选择HTTP2

    图形界面中的 AlPN 协议选择

加载旧配置

启用默认配置文件是不可逆的。但是,如果您决定部署不需要默认配置文件,则可以加载在启用默认配置文件之前保存的旧配置。重新启动设备后,这些更改将生效。

使用 CLI 加载旧配置

在命令提示窗口中,键入:

shell

root@ns# clear config

root@ns# cd /nsconfig

root@ns# cp ns.conf.NS.11.0.jun.16 ns.conf

root@ns# reboot