ADC

SSL 配置文件基础结构

SSLv3和RC4实施中的漏洞突显了使用最新的密码和协议来协商网络连接的安全设置的必要性。对配置进行任何更改(例如在数千个 SSL 端点上禁用 SSLv3)都是一个繁琐的过程。因此,作为 SSL 端点配置一部分的设置已与默认密码一起移到 SSL 配置文件中。要实现配置中的更改(包括密码支持),只需修改绑定到实体的配置文件即可。

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

前端配置文件包含适用于前端实体(接收来自客户端的请求的实体)的参数。通常,此实体是 SSL 虚拟服务器、透明 SSL 服务或 NetScaler 设备上的内部服务。后端配置文件包含适用于后端实体(ADC 设备上向后端服务器发送客户端请求的实体)的参数。通常,此实体是 NetScaler 设备上的 SSL 服务或服务组。如果您尝试配置不受支持的参数,则 ERROR: Specified parameters are not applicable for this type of SSL profile 会出现错误。某些 SSL 参数,例如 CRL 内存大小、OCSP 缓存大小、UndefAction 控制和 UndefAction 数据,不属于任何配置文件,因为这些参数独立于实体。这些参数存在于 流量管理 > SSL > 高级 SSL 设置中。有关安全监视器支持的 SSL 参数的信息,请参阅在安全监视器上设置 SSL 参数

SSL 配置文件支持以下操作:

  • 添加:在 NetScaler 设备上创建 SSL 配置文件。指定配置文件是前端还是后端。默认为前端。
  • 设置:— 修改现有配置文件的设置。
  • 取消设置:将指定参数设置为其默认值。如果您未指定任何参数,则会显示一条错误消息。如果您在实体上取消设置配置文件,则该配置文件将解除与该实体的绑定。
  • 删除:删除配置文件。任何实体正在使用的配置文件都无法删除。清除配置会删除所有实体。因此,配置文件也会被删除。
  • 绑定:将配置文件绑定到 SSL 实体。
  • 取消绑定:解除与 SSL 实体的配置文件的绑定。
  • 显示:显示 NetScaler 设备上可用的所有配置文件。如果指定了配置文件名称,则会显示该配置文件的详细信息。如果指定了实体,则会显示与该实体关联的配置文件。

重要:

  • SSL 配置文件的优先级高于 SSL 参数。也就是说,如果您使用 set ssl parameter 命令配置 SSL 参数,然后将配置文件绑定到 SSL 实体,则配置文件中的设置优先。

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

  • 在 GUI 和 CLI 中,启用默认配置文件时会添加确认提示,以防止错误地启用它。

低于 TLSv1.2 的协议在 SSL 内部服务上处于禁用状态。如果启用了默认(增强型)配置文件,则 ns_default_ssl_profile_internal_frontend_service 配置文件将绑定到 SSL 内部服务,并且配置文件中禁用 SSLv3、TLSv1.0 和 TLSv1.1 协议。

命令:

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
<!--NeedCopy-->

默认情况下,某些 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>
<!--NeedCopy-->

示例:

save config
shell
root@ns# cd /nsconfig
root@ns# cp ns.conf ns.conf.NS.11.0.jun.16
<!--NeedCopy-->

启用默认配置文件

重要:

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

  • 从版本 11.1 build 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
<!--NeedCopy-->

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

备注:

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

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

作为默认配置文件一部分的参数

运行以下命令列出作为默认前端和后端配置文件一部分的参数。

sh ssl profile ns_default_ssl_profile_frontend
sh ssl profile ns_default_ssl_profile_backend
<!--NeedCopy-->

示例:

> 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: NONE


    ECC Curve: P_256, P_384, P_224, P_521

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


> 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  ALL
    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

    Allow Extended Master Secret: NO

    ECC Curve: P_256, P_384, P_224, P_521

1)  Cipher Name: DEFAULT_BACKEND    Priority :1
    Description: Predefined Cipher Alias
 Done
 <!--NeedCopy-->

用例

启用默认配置文件后,它们将绑定到所有 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 虚拟服务器参数

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

以下平台支持此功能:

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

FIPS 平台尚不支持此功能。

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

要允许在后端进行安全重新协商,请为 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
<!--NeedCopy-->

使用 GUI 启用安全重新协商

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

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

主机标头验证

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

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

  • CERT-如果请求中的主机标头值被用于建立此 SSL 会话的证书所覆盖,则转发 连接。
  • STRICT-仅当请求中的主机标头值与 SSL 连接的 Client Hello 消息中传递的服务器名称值相匹配时,才会转发连接。
  • 否-未验证主机标头值。

可能的值:否、证书、严格 默认值: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 )]
<!--NeedCopy-->

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

要添加配置文件,请执行以下操作:

  1. 导航到 “ 系统” > “配置文件”。

    系统配置文件

  2. 选择 SSL 配置文件。单击添加

    SSL 配置文件

  3. 指定不同参数的值。

    SSL 配置文件参数

  4. 单击确定
  5. 单击 Done(完成)。

要重用现有 SSL 配置文件:

  1. 导航到 “ 系统” > “配置文件”。
  2. 选择现有配置文件,然后单击 添加
  3. 指定其他名称,更改任何参数,然后单击“确定”。
  4. 单击 Done(完成)。

TLS 会话票证延期

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

NetScaler 设备支持 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>
<!--NeedCopy-->

论点:

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

可能的值:ENABLED、DISABLED

默认值: 禁用

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

默认值:300

最小值:0

最大值:172800

示例:

add ssl profile profile1 -sessionTicket ENABLED -sessionTicketlifeTime 300
Done
<!--NeedCopy-->

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

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

安全实施会话票证

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

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

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

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

注意:

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

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>]
<!--NeedCopy-->

论点:

sessionTicket:按照 RFC 5077 的说明使用会话票证。建立初始握手需要进行 CPU 密集型公钥加密操作。使用已启用设置时,服务器会向客户端发出会话票证,客户端可以使用该票证执行简短握手。

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

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

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

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

可能的值:启用、禁用。默认值:启用

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

最大值: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)
<!--NeedCopy-->

使用 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
<!--NeedCopy-->

论点:

sessionTicket:按照 RFC 5077 的说明使用会话票证。建立初始握手需要进行 CPU 密集型公钥加密操作。使用已启用设置时,服务器会向客户端发出会话票证,客户端可以使用该票证执行简短握手。

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

sessionTicketKeyDataContains the session ticket name (0–15 bytes), the session AES key used to encrypt or decrypt the session ticket (16–31 bytes), and the session HMAC key used to compute the digest of the ticket (32–63 bytes). Externally generated by an administrator and added to a NetScaler appliance.

最大长度: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
<!--NeedCopy-->

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

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

  2. 选择 ns_default_ssl_profile_frontend 然后单击 编辑

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

    • 会话票证
    • 会话票证密钥数据
    • 确认会话票证密钥数据
  4. 单击确定

在 NetScaler 非 FIPS 平台上 SSL 握手中支持扩展主密钥

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

注意: EMS仅适用于使用TLS协议版本1.0、1.1或1.2的握手。

EMS的平台支持

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

您还可以使用 show hardware 命令来确定您的设备是否具有 Coleto (COL) 或 N3 芯片。

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

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

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

  • MPX 9700 FIPS 和 MPX 14000 FIPS 平台。

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

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

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

使用 CLI 启用 EMS

在命令提示符下,键入:

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
<!--NeedCopy-->

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

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

使用图形用户界面启用 EMS

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

    EMS

支持在客户端 hello 消息中处理 ALPN 分机

在前端 SSL 配置文件中添加了一个参数 alpnProtocol ,用于协商 ALPN 扩展中由 SSL_TCP 虚拟服务器处理的连接的应用程序协议。如果在客户端 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
 <!--NeedCopy-->

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

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

  2. 选择 ns_default_ssl_profile_frontend 然后单击 编辑

  3. 在“ALPN 协议”列表中,选择 HTTP2

    在 GUI 中选择 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
<!--NeedCopy-->

速率限制 SSL 重新协商

启用 SSL 重新协商后,重新协商请求的数量没有限制。因此,NetScaler 容易受到 DoS 攻击,最终可能导致 NetScaler 完全停止处理 SSL 流量。在 SSL 配置文件中引入了该参数 maxRenegrate ,通过限制 SSL 实体在一秒钟内收到的重新协商请求的数量来缓解此问题。

此参数仅在未设置为 denySSLReneg ALL 时才可配置。设置 maxRenegRate 为零时,将禁用速率限制(默认设置)。当它设置为 1 到 65535 之间的整数值时,将启用速率限制,并且绑定到 SSL 配置文件的每个实体每秒的最大重新协商请求数限制为该整数值。例如,如果您在 SSL 配置文件 ssl-profile-1 中将 maxRenegRate 参数设置为 100,并且此配置文件绑定到两个虚拟服务器 v1 和 v2,则 v1 的重新协商请求限制为 100,而 v2 的重新协商请求限制为 100。

注意:

DTLS 协议不支持此功能。

在使用 CLI 创建 SSL 配置文件时添加限制

在命令提示符下,键入:

add ssl profile pf1 -denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100

使用 CLI 对现有 SSL 配置文件设置限制

在命令提示符下,键入:

set ssl profile pf1 denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100

示例 在以下命令中,“maxReneGrate”设置为 100。因此,配置文件绑定到的所有实体每秒最多允许 100 个请求。

set ssl profile pf1 denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100

add ssl profile pf1 -denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100

使用 GUI 指定限制

  1. 导航到“系统”>“配置文件”>“SSL 配置文件”。
  2. 单击“添加”创建配置文件,或选择现有配置文件。
  3. 对于新的配置文件,请指定名称。
  4. 将“拒绝 SSL 重新协商”设置为“全部”以外的任何值。
  5. 指定 最大重新协商速率
  6. 单击确定
  7. 单击 Done(完成)。