SSL 卸载配置
要配置 SSL 卸载,必须在 NetScaler 设备上启用 SSL 处理并配置基于 SSL 的虚拟服务器。虚拟服务器将拦截 SSL 流量,解密流量,然后将其转发到绑定到虚拟服务器的服务。要保护时间敏感型流量(例如媒体流)的安全,您可以配置 DTLS 虚拟服务器。要启用 SSL 卸载,必须导入有效的证书和密钥,然后将证书和密钥绑定到虚拟服务器。
注意
从版本 13.1 build 17.x 开始,SSL 内部服务上将禁用低于 TLSv1.2 的协议。如果启用了默认(增强型)配置文件,则
ns_default_ssl_profile_internal_frontend_service
配置文件将绑定到 SSL 内部服务,并且配置文件中禁用 SSLv3、TLSv1.0 和 TLSv1.1 协议。
启用 SSL
要处理 SSL 流量,必须启用 SSL 处理。您可以在不启用 SSL 处理的情况下配置基于 SSL 的实体,例如虚拟服务器和服务。但是,在启用 SSL 处理之前,它们不起作用。
使用 CLI 启用 SSL 处理
在命令提示符下,键入:
enable ns feature ssl
show ns feature
<!--NeedCopy-->
示例:
enable ns feature SSL
Done
show ns feature
Feature Acronym Status
------- ------- ------
1) Web Logging WL OFF
2) Surge Protection SP ON
3) Load Balancing LB ON
.
.
.
9) SSL Offloading SSL ON
.
.
.
24) NetScaler Push push OFF
Done
<!--NeedCopy-->
使用 GUI 启用 SSL 处理
导航到“系统”>“设置”,然后在“模式和功能”组中,单击“配置基本功能”,然后单击“SSL 卸载”。
配置服务
在 NetScaler 设备上,服务表示物理服务器或物理服务器上的应用程序。配置完成后,服务将处于禁用状态,直到设备可以到达网络上的物理服务器并监视其状态。
使用 CLI 添加服务
在命令提示符下,键入以下命令以添加服务并验证配置:
add service <name> (<IP> | <serverName>) <serviceType> <port>
show service <serviceName>
<!--NeedCopy-->
示例:
add service sslsvc 198.51.100.225 SSL 443
Done
sh ssl service sslsvc
Advanced SSL configuration for Back-end SSL Service sslsvc:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: DISABLED
Session Reuse: ENABLED Timeout: 300 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Server Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Zero RTT Early Data: ???
DHE Key Exchange With PSK: ???
Tickets Per Authentication Context: ???
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT_BACKEND
Description: Default cipher list for Backend SSL session
Done
<!--NeedCopy-->
使用 CLI 修改或删除服务
要修改服务,请使用 set service 命令,这与使用 add service 命令类似,不同之处在于您输入现有服务的名称。
要删除服务,请使用 rm service 命令,该命令只接受 <name> 参数。
rm service <servicename>
<!--NeedCopy-->
示例:
rm service sslsvc
<!--NeedCopy-->
要修改服务,请使用 set service 命令,选择任意参数,然后更改其设置。
set service <name> (<IP> | <serverName>) <serviceType> <port>
<!--NeedCopy-->
示例:
set service sslsvc 198.51.100.225 SSL 443
<!--NeedCopy-->
使用 GUI 配置服务
导航到 流量管理 > 负载平衡 > 服务,创建服务,并将协议指定为 SSL。
SSL 虚拟服务器配置
安全会话需要在客户端与 NetScaler 设备上的基于 SSL 的虚拟服务器之间建立连接。SSL 虚拟服务器会拦截 SSL 流量、对其进行解密并进行处理,然后再将其发送到绑定到虚拟服务器的服务。
注意: 在 NetScaler 设备上将 SSL 虚拟服务器标记为关闭,直到绑定到有效的证书/密钥对和至少一项服务。基于 SSL 的虚拟服务器是协议类型为 SSL 或 SSL_TCP 的负载平衡虚拟服务器。必须在 NetScaler 设备上启用负载平衡功能。
使用 CLI 添加基于 SSL 的虚拟服务器
在命令提示窗口中,键入以下命令以创建基于 SSL 的虚拟服务器并验证配置:
add lb vserver <name> (serviceType) <IPAddress> <port>
show ssl vserver <name>
<!--NeedCopy-->
示例:
add lb vserver sslvs SSL 192.0.2.240 443
Done
sh ssl vserver sslvs
Advanced SSL configuration for VServer sslvs:
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: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Push Encryption Trigger: Always
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
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
使用 CLI 修改或删除基于 SSL 的虚拟服务器
要修改 SSL 虚拟服务器的负载平衡属性,请使用 set lb vserver
命令。set 命令与 add lb vserver
命令类似,不同之处在于您输入现有虚拟服务器的名称。要修改基于 SSL 的虚拟服务器的 SSL 属性,请使用 set ssl vserver
命令。有关详细信息,请参阅本页后面的“SSL 虚拟服务器参数”部分。
要删除 SSL 虚拟服务器,请使用 rm lb vserver
命令,该命令仅接受 <name>
参数。
使用 GUI 配置基于 SSL 的虚拟服务器
导航到 流量管理 > 负载平衡 > 虚拟服务器,创建虚拟服务器,然后将协议指定为 SSL。
将服务绑定到 SSL 虚拟服务器
ADC 设备将解密的 SSL 数据转发到网络中的服务器。要转发数据,代表这些物理服务器的服务必须绑定到接收 SSL 数据的虚拟服务器。
通常,ADC 设备和物理服务器之间的链路是安全的。因此,设备和物理服务器之间的数据传输不必加密。但是,您可以通过加密设备和服务器之间的数据传输来提供端到端加密。有关详细信息,请参阅 使用端到端加密配置 SSL 卸载。
注意: 在将服务绑定到基于 SSL 的虚拟服务器之前,启用 ADC 设备上的负载平衡功能。
使用 CLI 将服务绑定到虚拟服务器
在命令提示符下,键入以下命令以将服务绑定到虚拟服务器并验证配置:
bind lb vserver <name> <serviceName>
show lb vserver <name>
<!--NeedCopy-->
示例:
bind lb vserver sslvs sslsvc
Done
sh lb vserver sslvs
sslvs (192.0.2.240:443) - SSL Type: ADDRESS
State: DOWN[Certkey not bound]
Last state change was at Wed May 2 11:43:04 2018
Time since last state change: 0 days, 00:13:21.150
Effective State: DOWN
Client Idle Timeout: 180 sec
Down state flush: ENABLED
Disable Primary Vserver On Down : DISABLED
Appflow logging: ENABLED
No. of Bound Services : 1 (Total) 0 (Active)
Configured Method: LEASTCONNECTION BackupMethod: ROUNDROBIN
Mode: IP
Persistence: NONE
Vserver IP and Port insertion: OFF
Push: DISABLED Push VServer:
Push Multi Clients: NO
Push Label Rule: none
L2Conn: OFF
Skip Persistency: None
Listen Policy: NONE
IcmpResponse: PASSIVE
RHIstate: PASSIVE
New Service Startup Request Rate: 0 PER_SECOND, Increment Interval: 0
Mac mode Retain Vlan: DISABLED
DBS_LB: DISABLED
Process Local: DISABLE
Traffic Domain: 0
TROFS Persistence honored: ENABLED
Retain Connections on Cluster: NO
1) sslsvc (198.51.100.225: 443) - SSL State: DOWN Weight: 1
Done
<!--NeedCopy-->
使用 CLI 从虚拟服务器取消绑定服务
在命令提示符下,键入以下命令:
unbind lb vserver <name> <serviceName>
<!--NeedCopy-->
示例:
unbind lb vserver sslvs sslsvc
Done
<!--NeedCopy-->
使用 GUI 将服务绑定到虚拟服务器
- 导航到流量管理 > 负载平衡 > 虚拟服务器。
- 打开虚拟服务器,然后单击“服务和服务组”部分下的负载平衡虚拟服务器服务绑定 磁贴。
- 在“负载平衡虚拟服务器服务绑 定”页中,单击“添加绑定”选项卡,在“选择服务”下单击“单击选择”,然后选中要绑定的服务旁边的复选框。
- 单击 选择 ,然后单击 绑定。
配置服务器名称指示 (SNI) 虚拟服务器以安全托管多个站点
Web服务器使用虚拟主机托管多个具有相同IP地址的域名。该设备通过使用透明 SSL 服务或基于虚拟服务器的 SSL 卸载从 Web 服务器卸载 SSL 处理来支持托管多个安全域。但是,当多个网站托管在同一虚拟服务器上时,SSL 握手会在将预期的主机名发送到虚拟服务器之前完成。因此,设备无法确定在建立连接后向客户端出示哪个证书。通过在虚拟服务器上启用 SNI 可解决此问题。SNI 是传输层安全 (TLS) 扩展,客户端在握手初始化期间使用它来提供主机名。ADC 设备会将此主机名与公用名进行比较,如果不匹配,则将其与使用者备用名称 (SAN) 进行比较。如果名称匹配,设备将向客户端提供相应的证书。
如果同一组织控制多个子域并且二级域名相同,则通配符 SSL 证书有助于在多个子域上启用 SSL 加密。例如,使用通用名称“*.sports.net”颁发给体育网络的通配符证书可用于保护域名,例如“login.sports.net”和“help.sports.net”。它无法保护“login.ftp.sports.net”域的安全。
注意: 在 ADC 设备上,仅比较 SAN 字段中的域名、URL 和电子邮件 ID DNS 条目。
您可以使用 -SNICert 选项将多个服务器证书绑定到单个 SSL 虚拟服务器或透明服务。如果在虚拟服务器或服务上启用了 SNI,则虚拟服务器或服务将颁发这些证书。您可以随时启用 SNI。
使用 CLI 将多个服务器证书绑定到单个 SSL 虚拟服务器
在命令提示符下,键入以下命令以配置 SNI 并验证配置:
set ssl vserver <vServerName>@ [-SNIEnable ( ENABLED | DISABLED )]
bind ssl vserver <vServerName>@ -certkeyName <string> -SNICert
show ssl vserver <vServerName>
<!--NeedCopy-->
要使用 CLI 将多个服务器证书绑定到透明服务,请在上述命令中将 vserver
替换为 service,将 vservername
替换为 service name。
注意: 使用 -clearTextPort 80
选项创建 SSL 服务。
使用 GUI 将多个服务器证书绑定到单个 SSL 虚拟服务器
- 导航到流量管理 > 负载平衡 > 虚拟服务器。
- 打开 SSL 虚拟服务器,然后在 证书中选择 服务器证书。
- 添加证书或从列表中选择证书,然后单击 SNI 的服务器证书。
- 在高级设置中,选择 SSL 参数。
- 单击“SNI 启用”。
在后端服务上支持 SNI
注意:DTLS 后端服务不支持 SNI。
NetScaler 设备在后端支持服务器名称指示 (SNI)。也就是说,公用名作为客户端 hello 中的服务器名称发送到后端服务器,以便成功完成握手。此支持有助于满足联邦系统集成商的客户安全要求。此外,SNI 的优势在于仅使用一个端口,而不是在防火墙上打开数百个不同的 IP 地址和端口。
联邦系统集成商的客户安全要求包括在 2012R2 和 WAP 服务器中支持 Active Directory 联合身份验证服务 (ADFS) 3.0。为了满足此要求,需要在 NetScaler 设备上支持后端的 SNI。
注意:
要使 SNI 正常工作,客户端 hello 中的服务器名称必须与绑定到 SSL 虚拟服务器的后端服务上配置的主机名匹配。例如,如果后端服务器的主机名是 www.mail.example.com,则启用了 SNI 的后端服务必须配置为的服务器名称 https://www.mail.example.com。并且此主机名必须与客户端 hello 中的服务器名称匹配。
支持后端服务上的动态 SNI
NetScaler 设备支持在后端 TLS 连接上使用动态 SNI。也就是说,设备在客户端连接中学习 SNI 并在服务器端连接中使用它。您不再需要在 SSL 服务、服务组或配置文件中指定公用名称。客户端 Hello 消息的 SNI 扩展中收到的公用名将转发到后端 SSL 连接。
之前,您必须在 SSL 服务、服务组和 SSL 配置文件上配置静态 SNI。因此,只有配置的静态 SNI 扩展被发送到服务器。如果客户端需要同时访问多个域,ADC 设备将无法将从客户端收到的 SNI 发送到后端服务。相反,它发送了配置的静态公用名。现在,如果为多个域配置了后端服务器,则服务器可以根据来自设备的 Client Hello 消息中收到的 SNI 使用正确的证书进行响应。
要注意的事项:
-
必须在前端启用 SNI,并将正确的 SNI 证书绑定到 SSL 虚拟服务器。如果不在前端启用 SNI,则 SNI 信息不会传递到后端。
-
启用服务器身份验证后,服务器证书将通过 CA 证书进行验证,服务器证书中的公用名/SAN 条目将与 SNI 匹配。因此,CA 证书必须绑定到服务。
-
启用动态 SNI 时,后端连接和 SSL 会话的重用将基于 SNI。
启用动态 SNI 后,SSL 监视器不会发送 SNI。对于基于 SNI 的探测,请将配置静态 SNI 的后端配置文件附加到 SSL 监视器。必须使用与 SNI 相同的自定义标头配置监视器。
使用 CLI 在后端服务上配置 SNI
在命令提示符下,键入:
add service <name> <IP> <serviceType> <port>
add lb vserver <name> <IPAddress> <serviceType> <port>
bind lb vserver <name> <serviceName>
set ssl service <serviceName> -SNIEnable ENABLED -commonName <string>
set ssl profile <name> -SNIEnable ENABLED
<!--NeedCopy-->
示例:
add service service_ssl 198.51.100.100 SSL 443
add lb vserver ssl-vs 203.0.113.200 SSL 443
bind lb vserver ssl-vs service_ssl
set ssl service service_ssl -SNIEnable ENABLED –commonName www.example.com
set ssl profile sslprof -SNIEnable ENABLED
<!--NeedCopy-->
使用 GUI 在后端服务上配置 SNI
- 导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)> Services(服务)。
- 选择一个 SSL 服务,然后在 高级设置中单击 SSL 参数。
-
单击“SNI 启用”。
使用 GUI 在 SSL 配置文件上配置 SNI
- 导航到“系统”>“配置文件”>“SSL 配置文件”。
- 单击添加。
-
在“基本设置”中,选择“SNI 启用”。
- 单击确定。
将安全监视器绑定到启用了 SNI 的后端服务
您可以将 HTTP、HTTP-ECV、TCP 或 TCP-ECV 类型的安全监视器绑定到支持 SNI 的后端服务和服务组。但是,如果启用了动态 SNI,监视器探测器不会发送 SNI 扩展。要发送 SNI 探测,请在后端 SSL 配置文件中启用静态 SNI 并将配置文件绑定到监视器。将监视器中的自定义标头设置为在监视器探测的客户端 hello 中作为 SNI 扩展名发送的服务器名称。
使用 CLI 配置安全监视器并将其绑定到启用了 SNI 的后端服务
在命令提示符下,键入:
add lb monitor <monitorName> <type> -secure YES
add ssl profile <name> -sslProfileType BackEnd
set lb monitor <monitorName> <type> -customHeaders <string> -sslprofile <backend ssl profile>
set ssl profile <name> -sniEnable ENABLED -commonName <string>
bind service <name> -monitorName <string>
<!--NeedCopy-->
示例:
add ssl profile sni_backend_profile -sslProfileType BackEnd
set ssl profile sni_backend_profile -sniEnable ENABLED -commonName example.com
add lb monitor http-ecv-mon HTTP-ECV -secure YES
set monitor http-ecv-mon HTTP-ECV -customHeaders "Host: example.com\r\n" -sslprofile sni_backend_profile
bind service ssl_service –monitorName http-ecv-mon
<!--NeedCopy-->
使用 GUI 配置安全监视器并将其绑定到启用了 SNI 的后端服务
- 导航到“系统”>“配置文件”>“SSL 配置文件”。
- 单击添加。
-
指定配置文件的名称,然后在 SSL 配置文件类型中选择 后端。
-
指定公用名(与主机标头相同),然后选择“SNI 启用”。
- 单击确定。
- 导航到“流量管理”>“负载平衡”>“监视”。
- 单击添加。
- 指定监视器的名称。在 类型中,选择 HTTP、HTTP-ECV、TCP 或 TCP-ECV。
-
指定 自定义页眉。
- 选择“安全”。
- 在 SSL 配置文件中,选择在上述步骤中创建的后端 SSL 配置文件。
-
单击 Create(创建)。
- 导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)> Services(服务)。
- 选择一个 SSL 服务,然后单击 编辑。
- 在 监视器中,单击 添加绑定,选择在前面步骤中创建的监视器,然后单击 绑定。
使用 GUI 配置安全监视器并将其绑定到启用了 SNI 的后端服务
- 导航到 流量管理 > 负载平衡 > 监控。
- 添加 HTTP-ECV 或 TCP-ECV类型的监视器,然后指定 自定义标头。
- 选择创建。
- 导航到 流量管理 > 负载平衡 > 服务。
- 选择一个 SSL 服务,然后单击 编辑。
- 在 监视器中,单击 添加绑定,选择在步骤 3 中创建的监视器,然后单击 绑定。
允许对未知的服务器名称继续握手
注意
此功能在 13.1 版 build 45.x 及更高版本中可用。
启用 SNI 并且 NetScaler 设备收到带有未知服务器名称的客户端 hello 时,它将终止 SSL 握手。从版本 13.1 build 45.x 开始,即使服务器名称未知,设备也允许继续 SSL 握手,并将放弃或完成握手的决定权留给客户端。当 SNI 处于启用状态 时,您可以使用 allowUnknownSNI
参数在前端 SSL 配置文件上配置此设置。
如果您需要对基于 SNI 的规则使用转发操作,请禁用此参数。例如,您已在虚拟服务器 v1 上启用了 SNI,并配置了将特定域 (www.example.com) 的所有请求转发到虚拟服务器 v2 的策略。以前,在 v1 上收到的有关此域的任何请求都会自动转发到 v2。但是,如果启用了该 allowunknownSNI
参数,则请求将在 v1 上处理。必须禁用该参数,设备才能在 v1 上处理请求。
使用 CLI 配置允许未知 SNI
在命令提示符下,键入:
set ssl profile default_profile -SNIEnable Enabled -allowUnknownSNI <DISABLED/ENABLED>
默认情况下,`allowunknownSNI 参数处于禁用状态。结果,设备会中止未知服务器名称的握手。要启用此设置,请键入:
set ssl profile default_profile -SNIEnable Enabled -allowUnknownSNI ENABLED
使用 GUI 配置允许未知 SNI
- 导航到 系统 > 配置文件 > SSL 配置文件。
- 如果您添加配置文件,请在 SSL 配置文件类型列表中选择前端。否则,您可以编辑现有的前端配置文件。
-
选择“允许未知 SNI”。
- 单击 确定 ,然后单击 完成。
添加或更新证书密钥对
备注:
如果您没有现有证书和密钥,请参阅 创建证书。
要创建 ECDSA 证书密钥对,请单击 创建 ECDSA 证书密钥对。
受密码保护的证书密钥对始终可以成功添加。在 13.0 build 79.x 之前的版本中,如果在 NetScaler 设备上启用了强密码选项,则有时不会添加受密码保护的证书密钥对。但是,如果降级到早期版本,证书密钥配置将丢失。此外,在证书密钥对的 NITRO API 响应中,将发送
passplain
变量而不是passcrypt
变量。
对于任何 SSL 事务,服务器都需要有效的证书以及相应的私钥和公钥对。SSL 数据使用服务器的公钥进行加密,该公钥可通过服务器的证书获得。解密需要相应的私钥。添加 SSL 证书密钥对时使用的私有密钥的密码将使用每个 NetScaler 设备的唯一加密密钥进行保存。
ADC 设备会从服务器卸载 SSL 事务。因此,服务器的证书和私钥必须存在于设备上,并且证书必须与其相应的私钥配对。此证书密钥对必须绑定到处理 SSL 事务的虚拟服务器。
注意: NetScaler 设备上的默认证书为 2048 位。在早期版本中,默认证书为512位或1024位。升级到版本 11.0 后,您必须从 "ns-"
开始删除所有旧的证书密钥对,然后重新启动设备以自动生成 2048 位默认证书。
证书和密钥必须位于 NetScaler 设备的本地存储中,然后才能将其添加到设备中。如果您的证书或密钥文件不在设备上,请在创建对之前将其上载到设备。
重要提示: 默认情况下,证书和密钥存储在 /nsconfig/ssl 目录中。如果您的证书或密钥存储在任何其他位置,则必须提供 NetScaler 设备上文件的绝对路径。NetScaler FIPS 设备不支持外部密钥(非 FIPS 密钥)。在 FIPS 设备上,无法从硬盘或闪存等本地存储设备加载密钥。FIPS 密钥必须存在于设备的硬件安全模块 (HSM) 中。
NetScaler 设备仅支持 RSA 密钥。
设置通知期限,并启用到期监视器,以便在证书过期之前发出提示。
NetScaler 设备支持证书和私钥文件的以下输入格式:
- PEM-隐私增强型邮件
- DER-区分编码规则
- PFX-个人信息交换
软件会自动检测格式。因此,您不再需要在 inform 参数中指定格式。如果您指定了格式(正确或不正确),软件将忽略它。证书和密钥文件的格式必须相同。
注意: 必须使用以下哈希算法之一对证书进行签名:
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
MPX 设备支持 512 位或更多位的证书,大小不超过以下大小:
- 虚拟服务器上的 4096 位服务器证书
- 服务上的 4096 位客户端证书
- 4096 位 CA 证书(包括中间证书和根证书)
- 后端服务器上的 4096 位证书
- 4096 位客户端证书(如果在虚拟服务器上启用了客户端身份验证)
VPX 虚拟设备支持 512 位或更多位的证书,大小不超过以下大小:
- 虚拟服务器上的 4096 位服务器证书
- 服务上的 4096 位客户端证书
- 4096 位 CA 证书(包括中间证书和根证书)
- 后端服务器上的 4096 位证书
- 4096 位客户端证书(如果在虚拟服务器上启用了客户端身份验证)
下表显示了 NetScaler 设备支持的 RSASSA-PSS 参数集。X.509 证书路径验证支持 RSASSA-PSS 算法。
公钥 OID | 掩码生成功能 (MGF) | MGF 摘要函数 | 签名摘要函数 | Salt 长度 |
---|---|---|---|---|
rsaEncryption | MGF1 | SHA-256 | SHA-256 | 32 字节 |
rsaEncryption | MGF1 | SHA-384 | SHA-384 | 48 字节 |
rsaEncryption | MGF1 | SHA-512 | SHA-512 | 64 字节 |
注意
NetScaler SDX 设备支持 512 位或更多位的证书。设备上托管的每个 NetScaler VPX 实例都支持 VPX 虚拟设备的上述证书大小。但是,如果将 SSL 芯片分配给实例,则该实例支持 MPX 设备支持的证书大小。
使用 CLI 添加证书密钥对
在命令提示符下,键入以下命令以添加证书密钥对并验证配置:
add ssl certKey <certkeyName> -cert <string>[(-key <string> [-password]) | -fipsKey <string>] [-inform ( DER | PEM )] [<passplain>] [-expiryMonitor ( ENABLED | DISABLED ) [-notificationPeriod <positive_integer>]]
show ssl certKey [<certkeyName>]
<!--NeedCopy-->
示例:
add ssl certKey sslckey -cert server_cert.pem -key server_key.pem -password ssl -expiryMonitor ENABLED -notificationPeriod 30
Done
Note: For FIPS appliances, replace -key with -fipskey
show ssl certKey sslckey
Name: sslckey Status: Valid, Days to expiration:8418
Version: 3
Serial Number: 01
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US,ST=SJ,L=SJ,O=NS,OU=NSSSL,CN=www.root.com
Validity
Not Before: Jul 15 02:25:01 2005 GMT
Not After : Nov 30 02:25:01 2032 GMT
Subject: C=US,ST=SJ,L=SJ,O=NS,OU=NSSSL,CN=www.server.com
Public Key Algorithm: rsaEncryption
Public Key size: 2048
Done
<!--NeedCopy-->
使用 CLI 更新或删除证书密钥对
要修改证书密钥对中的过期监视器或通知周期,请使用 set ssl certkey
命令。要替换证书密钥对中的证书或密钥,请使用 update ssl certkey
命令。update ssl certkey
命令具有用于覆盖域检查的额外参数。对于这两个命令,请输入现有证书密钥对的名称。要删除 SSL 证书密钥对,请使用 rm ssl certkey
命令,该命令仅接受 <certkeyName>
参数。
示例:
set ssl certKey <certkeyName> [-expiryMonitor ( ENABLED | DISABLED )
[-notificationPeriod <positive_integer>]]
update ssl certKey <certkeyName> [-cert <string> [-password]] [-key
<string> | -fipsKey <string>] [-inform <inform>] [-noDomainCheck]
<!--NeedCopy-->
使用 GUI 添加或更新证书密钥对
-
导航到 流量管理 > SSL > 证书 > 服务器。
-
输入以下参数的值,然后单击“安装”。
-
证书密钥对名称-证书和私钥对的名称。
-
证书文件名-从证书颁发机构收到的签名证书。
-
密钥文件名-用于形成证书密钥对的私钥文件的名称,以及可选的路径。
-
在重启期间记录证书密钥对加载失败
将证书文件或私钥文件上载到 NetScaler 内存后,除非设备重新启动,否则对源文件的任何更改都不会反映出来。重启可能由于以下原因而失败:
- 证书文件已更新,但密钥文件未更新。
- 更新的文件已损坏。
- 新的密钥文件受密码保护。
- 密码已更改。
这些失败已登录 /var/log/ns.log
。您可以使用 tail -f /var/log/ns.log
命令查看该文件。
为了记录此故障,引入了以下更改:
-
在设备中添加或更新证书文件和密钥文件时,会为证书密钥对创建摘要属性。如果没有密钥文件(例如,在 FIPS 或 HSM 配置中),则仅为证书文件创建摘要。
注意:
证书文件名和私钥文件名必须仅包含以下字符:
- a to z (lower case) - A to Z (upper case) - 0 to 9 (numbers) - / (forward slash) - . (period) - _ (underscore) - : (colon) - - (hyphen) <!--NeedCopy-->
-
设备重新启动时,会将配置文件中的摘要与为设备上的证书和密钥文件(可选)计算的摘要进行比较。如果不匹配,则会记录一条错误消息。
将证书密钥对绑定到 SSL 虚拟服务器
重要提示:在将证书绑定到 SSL 虚拟服务器之前,将任何中间证书链接到此证书。有关链接证书的信息,请参阅 创建证书链。
用于处理 SSL 事务的证书必须绑定到接收 SSL 数据的虚拟服务器。如果您有多个接收 SSL 数据的虚拟服务器,则必须将有效的证书密钥对绑定到每个虚拟服务器。
使用已上载到 NetScaler 设备的现有 SSL 证书。作为测试目的的替代方法,请在设备上创建自己的 SSL 证书。通过在设备上使用 FIPS 密钥创建的中间证书无法绑定到 SSL 虚拟服务器。
在 SSL 握手期间,在客户端身份验证期间的证书请求消息中,服务器会列出绑定到服务器的所有证书颁发机构 (CA) 的可分辨名称 (DN)。服务器仅接受此列表中的客户端证书。如果不希望将特定 CA 证书的 DN 名称发送到 SSL 客户端,请设置 skipCA
标志。此设置指示不得将特定 CA 证书的可分辨名称发送到 SSL 客户端。
有关如何创建自己的证书的详细信息,请参阅 管理证书。
注意:Citrix 建议您仅使用由受信任的证书颁发机构颁发的有效 SSL 证书。
使用 CLI 将 SSL 证书密钥对绑定到虚拟服务器
在命令提示符下,键入以下命令以将 SSL 证书密钥对绑定到虚拟服务器并验证配置:
- bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName> -CA -skipCAName
- show ssl vserver <vServerName>
<!--NeedCopy-->
示例:
bind ssl vs vs1 -certkeyName cert2 -CA -skipCAName
Done
sh ssl vs vs1
Advanced SSL configuration for VServer vs1:
DH: 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: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: DISABLED TLSv1.2: DISABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: cert1 CA Certificate OCSPCheck: Optional CA_Name Sent
2) CertKey Name: cert2 CA Certificate OCSPCheck: Optional CA_Name Skipped
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
使用 CLI 从虚拟服务器解除 SSL 证书密钥对的绑定
如果您尝试使用 unbind ssl certKey <certkeyName>
命令从虚拟服务器取消绑定证书密钥对,则会显示一条错误消息。出现错误是因为命令的语法已更改。在命令提示符下,键入以下命令:
unbind ssl vserver <vServerName> -certkeyName <string>
<!--NeedCopy-->
示例:
unbind ssl vserver vssl -certkeyName sslckey
<!--NeedCopy-->
使用 GUI 将 SSL 证书密钥对绑定到虚拟服务器
-
导航到 流量管理 > 负载平衡 > 虚拟服务器 ,然后打开 SSL 虚拟服务器。在“证书”部分内单击。
-
单击箭头以选择证书密钥对。
-
从列表中选择证书密钥对。
-
将证书密钥对绑定到虚拟服务器。要将服务器证书添加为 SNI 证书,请选择 SNI 的服务器证书。
SSL 虚拟服务器参数
为 SSL 虚拟服务器设置高级 SSL 配置。您还可以在 SSL 配置文件中设置许多这些参数。有关可在 SSL 配置文件中设置的参数的信息,请参阅 SSL 配置文件参数。
使用 CLI 设置 SSL 虚拟服务器参数
在命令提示符下,键入:
set ssl vserver <vServerName>@ [-clearTextPort <port>] [-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>]] [-sslv2Redirect ( ENABLED | DISABLED )[-sslv2URL <URL>]] [-clientAuth ( ENABLED | DISABLED ) [-clientCert ( Mandatory | Optional )]] [-sslRedirect ( ENABLED | DISABLED )][-redirectPortRewrite ( ENABLED | DISABLED )] [-ssl2 ( ENABLED | DISABLED )] [-ssl3 ( ENABLED | DISABLED )] [-tls1 ( ENABLED | DISABLED )] [-tls11 ( ENABLED | DISABLED )] [-tls12 ( ENABLED | DISABLED )][-tls13 ( ENABLED | DISABLED )] [-SNIEnable ( ENABLED | DISABLED )][-ocspStapling ( ENABLED | DISABLED )] [-pushEncTrigger <pushEncTrigger>] [-sendCloseNotify ( YES | NO )] [-dtlsProfileName <string>] [-sslProfile <string>] [-HSTS ( ENABLED | DISABLED )][-maxage <positive_integer>] [-IncludeSubdomains ( YES | NO )][-strictSigDigestCheck ( ENABLED | DISABLED )] [-zeroRttEarlyData (ENABLED | DISABLED )] [-tls13SessionTicketsPerAuthContext <positive_integer>] [-dheKeyExchangeWithPsk ( YES | NO )]
<!--NeedCopy-->
Diffie-Hellman (DH) 参数
要在设备上使用需要 DH 密钥交换来设置 SSL 事务的密码,请在设备上启用 DH 密钥交换。根据您的网络配置其他设置。
要列出必须使用 CLI 设置 DH 参数的密码,请键入:sh cipher DH。
要列出必须使用配置实用程序设置 DH 参数的密码,请导航至 流量管理 > SSL > 密码组,然后双击 DH。
有关如何启用 DH 密钥交换的详细信息,请参阅 生成 Diffie-Hellman (DH) 密钥。
使用 CLI 配置 DH 参数
在命令提示符下,键入以下命令以配置 DH 参数并验证配置:
- `set ssl vserver <vserverName> -dh <Option> -dhCount <RefreshCountValue> -filepath <string>
- show ssl vserver <vServerName>`
<!--NeedCopy-->
示例:
set ssl vserver vs-server -dh ENABLED -dhFile /nsconfig/ssl/ns-server.cert -dhCount 1000
Done
show ssl vserver vs-server
Advanced SSL configuration for VServer vs-server:
DH: ENABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
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: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
使用 GUI 配置 DH 参数
- 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
- 在“SSL 参数”部分中,选择“启用 DH 参数”,然后指定刷新计数和文件路径。
短暂的 RSA
临时 RSA 允许导出客户端与安全服务器通信,即使服务器证书不支持导出客户端(1024 位证书)也是如此。如果要阻止导出客户端访问安全 Web 对象或资源,则需要禁用临时 RSA 密钥交换。
默认情况下,此功能在 NetScaler 设备上处于启用状态,刷新计数设置为零(无限使用)。
注意:
将导出密码绑定到基于 SSL 或 TCP 的 SSL 虚拟服务器或服务时,会自动生成临时 RSA 密钥。删除导出密码时,不会删除 eRSA 密钥。稍后,当另一个导出密码绑定到基于 SSL 或基于 TCP 的 SSL 虚拟服务器或服务时,会重复使用该密码。当系统重新启动时,eRSA密钥将被删除。
使用 CLI 配置临时 RSA
在命令提示符下,键入以下命令以配置临时 RSA 并验证配置:
set ssl vserver <vServerName> -eRSA (enabled | disabled) -eRSACount <positive_integer>
show ssl vserver <vServerName>
<!--NeedCopy-->
示例:
set ssl vserver vs-server -eRSA ENABLED -eRSACount 1000
Done
show ssl vserver vs-server
Advanced SSL configuration for VServer vs-server:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
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: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
使用 GUI 配置临时 RSA
- 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
- 在 SSL 参数 部分中,选择 启用临时 RSA,然后指定刷新计数。
会话重用
对于 SSL 事务,建立初始 SSL 握手需要进行 CPU 密集型公钥加密操作。大多数握手操作都与 SSL 会话密钥(客户端密钥交换消息)的交换相关联。当客户端会话空闲一段时间后又恢复时,SSL 握手通常会重新执行。启用会话重用后,可以避免会话密钥交换来自客户端的会话恢复请求。
默认情况下,会话重用在 NetScaler 设备上处于启用状态。启用此功能可减少服务器负载,缩短响应时间,并增加服务器可以支持的每秒 SSL 事务数 (TPS)。
使用 CLI 配置会话重用
在命令提示符下,键入以下命令以配置会话重用并验证配置:
set ssl vserver <vServerName> -sessReuse ( ENABLED | DISABLED ) -sessTimeout <positive_integer>
show ssl vserver <vServerName>
<!--NeedCopy-->
示例:
set ssl vserver vs-ssl -sessreuse enabled -sesstimeout 600
Done
show ssl vserver vs-ssl
Advanced SSL configuration for VServer vs-ssl:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
Session Reuse: ENABLED Timeout: 600 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Client Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) CertKey Name: Auth-Cert-1 Server Certificate
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
使用 GUI 配置会话重用
- 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
- 在“SSL 参数”部分中,选择“启用会话重用”,然后指定会话保持活动状态的时间。
SSL 协议设置
NetScaler 设备支持 SSLv3、TLSv1、TLSv1.1 和 TLSv1.2 协议。这些协议中的每一项都可以根据部署和连接到设备的客户端类型的要求在设备上进行设置。
TLS 协议版本 1.0、1.1 和 1.2 比旧版本的 TLS/SSL 协议更安全。但是,为了支持旧系统,许多 TLS 实现都与 SSLv3 协议保持向后兼容。在 SSL 握手中,将使用客户端和在 NetScaler 设备上配置的 SSL 虚拟服务器共用的最高协议版本。
在第一次握手尝试中,TLS 客户端提供了它所支持的最高协议版本。如果握手失败,客户端将提供较低的协议版本。例如,如果使用 TLS 版本 1.1 的握手失败,客户端将尝试通过提供 TLSv1.0 协议来重新协商。如果尝试不成功,客户端将使用 SSLv3 协议重新尝试。“中间人”(MITM) 攻击者可以打破初始握手并触发与 SSLv3 协议的重新协商,然后利用 SSLv3 中的漏洞。为了缓解此类攻击,您可以禁用 SSLv3 或不允许使用降级协议进行重新协商。但是,如果您的部署包括旧式系统,则此方法可能不切实际。另一种方法是在客户端请求中识别信令密码套件值 (TLS_FALLBACK_SCSV)。
客户端 hello 消息中的 TLS_FALLBACK_SCSV 值向虚拟服务器指示客户端以前曾尝试使用更高协议版本进行连接,而当前请求是回退。如果虚拟服务器检测到此值,并且它支持的版本高于客户端指示的版本,则它会拒绝连接并发出致命警报。如果满足以下条件之一,握手将成功:
- 客户端问候消息中不包含 TLS_FALLBACK_SCSV 值。
- 客户端 hello 中的协议版本是虚拟服务器支持的最高协议版本。
使用 CLI 配置 SSL 协议支持
在命令提示符下,键入以下命令以配置 SSL 协议支持并验证配置:
set ssl vserver <vServerName> -ssl2 ( ENABLED | DISABLED ) -ssl3 ( ENABLED | DISABLED ) -tls1 ( ENABLED | DISABLED ) -tls11 ( ENABLED | DISABLED ) -tls12 ( ENABLED | DISABLED )
show ssl vserver <vServerName>
<!--NeedCopy-->
示例:
set ssl vserver vs-ssl -tls11 ENABLED -tls12 ENABLED
Done
sh ssl vs vs-ssl
Advanced SSL configuration for VServer vs-ssl:
DH: 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: DISABLED
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
1 bound certificate:
1) CertKey Name: mycert Server Certificate
1 configured cipher:
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
使用 GUI 配置 SSL 协议支持
- 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
- 在 SSL 参数部分中,选择要启用的协议。
关闭通知
关闭通知是指示 SSL 数据传输结束的安全消息。全局级别需要关闭通知设置。此设置适用于所有虚拟服务器、服务和服务组。有关全局设置的信息,请参阅本页后面的“全局 SSL 参数”部分。
除了全局设置外,还可以在虚拟服务器、服务或服务组级别设置 close-notify 参数。因此,您可以灵活地为一个图元设置参数,而为另一个图元取消设置该参数。但是,请确保在全局级别设置此参数。否则,实体级别的设置将不适用。
使用 CLI 在实体级别配置关闭通知
在命令提示符下,键入以下任一命令以配置 close-notify 功能并验证配置:
- 要在虚拟服务器级别进行配置,请键入:
set ssl vserver <vServerName> -sendCloseNotify ( YES | NO )
show ssl vserver <vServerName>
<!--NeedCopy-->
- 要在服务级别进行配置,请键入:
set ssl service <serviceName> -sendCloseNotify ( YES | NO )
show ssl service <serviceName>
<!--NeedCopy-->
- 要在服务组级别进行配置,请键入:
set ssl serviceGroup <serviceGroupName> -sendCloseNotify ( YES | NO )
show ssl serviceGroup <serviceGroupName>
<!--NeedCopy-->
示例:
set ssl vserver sslvsvr -sendCloseNotify YES
Done
<!--NeedCopy-->
使用 GUI 在实体级别配置关闭通知功能
- 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
- 在“SSL 参数”部分中,选择“发送关闭通知”。
全局 SSL 参数
SSL 配置的高级自定义可解决特定问题。您可以使用 set ssl parameter
命令或配置实用程序指定以下内容:
- 用于SSL交易的量子大小。
- CRL 内存大小。
- OCSP 高速缓存大小。
- 拒绝 SSL 重新协商。
- 为已解密、加密或所有记录设置 PUSH 标志。
- 如果客户端为一个域发起握手并向另一个域发送 HTTP 请求,则删除请求。
- 设置触发加密的时间。
注意:仅当您使用
set ssl vserver
命令或配置实用程序设置基于计时器的加密时,指定的时间才适用。 - NDCPP 合规性证书检查 — 当设备充当客户端(后端连接)时适用。在证书验证期间,如果 SSL 证书中存在 SAN,则忽略公用名。
- 启用基于 Cavium 芯片的设备(如 MPX 14000)和基于 Intel Coleto 芯片的设备(例如具有不同数量数据包引擎的 MPX 15000 设备)的异构群集。
- 在后端启用安全重新协商。
- 自适应 SSL 流量控制。
使用 CLI 配置全局 SSL 参数
在命令提示符下,键入以下命令以配置高级 SSL 设置并验证配置:
set ssl parameter [-quantumSize <quantumSize>] [-crlMemorySizeMB <positive_integer>] [-strictCAChecks (YES | NO)] [-sslTriggerTimeout <positive_integer>] [-sendCloseNotify (YES | NO)] [-encryptTriggerPktCount <positive_integer>] [-denySSLReneg <denySSLReneg>] [-insertionEncoding (Unicode|UTF-8)] [-ocspCacheSize <positive_integer>][- pushFlag <positive_integer>] [- dropReqWithNoHostHeader (YES | NO)] [-pushEncTriggerTimeout <positive_integer>] [-ndcppComplianceCertCheck ( YES | NO)] [-heterogeneousSSLHW (ENABLED | DISABLED )]
show ssl parameter
<!--NeedCopy-->
示例:
set ssl parameter -quantumSize 8 -crlMemorySizeMB 256 -strictCAChecks no -ssltriggerTimeout 100 -sendClosenotify no -encryptTriggerPktCount 45 -denySSLReneg NONSECURE -insertionEncoding unicode -ocspCacheSize 10 -pushFlag 3 -dropReqWithNoHostHeader YES -pushEncTriggerTimeout 100 ms -ndcppComplianceCertCheck YES
Done
show ssl parameter
Advanced SSL Parameters
-----------------------
SSL quantum size : 8 KB
Max CRL memory size : 256 MB
Strict CA checks : NO
Encryption trigger timeout : 100 ms
Send Close-Notify : NO
Encryption trigger packet count : 45
Deny SSL Renegotiation : NONSECURE
Subject/Issuer Name Insertion Format : Unicode
OCSP cache size : 10 MB
Push flag : 0x3 (On every decrypted and encrypted record)
Strict Host Header check for SNI enabled SSL sessions : YES
PUSH encryption trigger timeout : 100 ms
Crypto Device Disable Limit : 0
Global undef action for control policies : CLIENTAUTH
Global undef action for data policies : NOOP
Default profile : DISABLED
SSL Insert Space in Certificate Header : YES
Disable TLS 1.1/1.2 for SSL_BRIDGE secure monitors : NO
Disable TLS 1.1/1.2 for dynamic and VPN services : NO
Software Crypto acceleration CPU Threshold : 0
Hybrid FIPS Mode : DISABLED
Signature and Hash Algorithms supported by TLS1.2 : ALL
SSL Interception Error Learning and Caching : DISABLED
SSL Interception Maximum Error Cache Memory : 0 Bytes
NDCPP Compliance Certificate Check : YES
Heterogeneous SSL HW (Cavium and Intel Based) : ENABLED
Done
<!--NeedCopy-->
使用 GUI 配置 NDcPP 合规性证书检查
-
导航到 流量管理 > SSL ,然后在 设置 组中选择 更改高级 SSL 设置。
-
选择“NDCPP 合规性证书检查”。单击确定。
支持 NetScaler 设备后端的安全重新协商
注意: 此功能在版本 13.0 build 58.x 及更高版本中受支持。在早期版本和内部版本中,后端仅支持非安全重新协商。
以下平台支持该功能: • VPX • 含有 N2 或 N3 芯片的 MPX 平台 • 基于 Intel Coleto SSL 芯片的平台
FIPS 平台尚不支持该功能。
默认情况下,ADC 设备的后端拒绝安全重新协商。也就是说, denySSLReneg
参数设置为 ALL(默认值)。
要允许在后端进行安全重新协商,请为 denySSLReneg
参数选择以下设置之一:
- 否
- FRONTEND_CLIENT
- FRONTEND_CLIENTSERVER
- NONSECURE
使用 CLI 启用安全重新协商
在命令提示符下,键入:
set ssl parameter -denySSLReneg <denySSLReneg>
示例:
set ssl parameter -denySSLReneg NONSECURE
Done
sh ssl parameter
Advanced SSL Parameters
-----------------------
SSL quantum size : 8 KB
Max CRL memory size : 256 MB
Strict CA checks : NO
Encryption trigger timeout : 100 ms
Send Close-Notify : YES
Encryption trigger packet count : 45
Deny SSL Renegotiation : NONSECURE
Subject/Issuer Name Insertion Format : Unicode
OCSP cache size : 10 MB
Push flag : 0x0 (Auto)
Strict Host Header check for SNI enabled SSL sessions : NO
Match HTTP Host header with SNI : CERT
PUSH encryption trigger timeout : 1 ms
Crypto Device Disable Limit : 0
Global undef action for control policies : CLIENTAUTH
Global undef action for data policies : NOOP
Default profile : ENABLED
SSL Insert Space in Certificate Header : YES
Disable TLS 1.1/1.2 for SSL_BRIDGE secure monitors : NO
Disable TLS 1.1/1.2 for dynamic and VPN services : NO
Software Crypto acceleration CPU Threshold : 0
Hybrid FIPS Mode : DISABLED
Signature and Hash Algorithms supported by TLS1.2 : ALL
SSL Interception Error Learning and Caching : DISABLED
SSL Interception Maximum Error Cache Memory : 0 Bytes
NDCPP Compliance Certificate Check : NO
Heterogeneous SSL HW (Cavium and Intel Based) : DISABLED
Crypto Operation Queue Limit : 150%
Done
<!--NeedCopy-->
使用 GUI 启用安全重新协商
- 导航到 Traffic Management(流量管理)> SSL > Change advanced SSL settings(更改高级 SSL 设置)。
-
将“拒绝 SSL 重新协商”设置为 ALL 以外的任何值。
自适应 SSL 流量控制
注意: 此功能在版本 13.0 build 58.x 及更高版本中受支持。
当设备收到高流量且加密加速容量已满时,设备将开始排队连接以便稍后进行处理。目前,此队列的大小固定为 64 K,如果超过此值,设备将开始断开连接。
用户可以配置一个占实际容量百分比的值。因此,如果队列中的元素数量大于自适应和动态计算的限制,设备就会丢弃新连接。此方法可控制传入的 SSL 连接,并防止设备上过度消耗资源和其他故障,例如负载平衡监视故障或对安全应用程序的响应缓慢。
如果队列为空,设备可以继续接受连接。如果队列不为空,则表示加密系统已达到其容量,设备开始排队连接。
限额的计算依据是:
- 设备的实际容量。
- 用户配置的值占实际容量的百分比。默认值设置为 150%。
例如,如果设备在给定时间的实际容量为每秒 1000 次操作,并且配置了默认百分比,则设备断开连接的限制为 1500(1000 次中的 150%)。
使用 CLI 配置操作队列限制
在命令提示符下,键入:
set ssl parameter -operationQueueLimit <positive_integer>
操作队列限制 -以加密操作队列容量的百分比为单位的限制,超过该容量后,在队列减少之前不接受新的 SSL 连接。默认值为 150。最小值:0。最大值:10000。
使用 GUI 配置操作队列限制
- 导航到流量管理 > SSL。
- 在“设置”中,单击“更改高级 SSL 设置”。
- 在 操作队列限制中键入一个值。默认值为 150。
-
单击确定。
异构群集部署
通过将 SSL 参数“异构 SSL HW”设置为“已启用”,您可以使用不同数量的数据包引擎来构建 NetScaler MPX 设备的异构群集部署。例如,要形成基于 Cavium 芯片的设备(MPX 14000 或类似设备)和基于 Intel Coleto 芯片的设备(MPX 15000 或类似设备)的群集,请启用 SSL 参数“异构 SSL HW”。要使用同一芯片形成一个平台群集,请保留此参数的默认值 (禁用)。
备注:
异构群集不支持以下功能:
- NetScaler SDX 设备上托管的 VPX 实例。
- SSL 实体(例如虚拟服务器、服务、服务组和内部服务)上的 SSLv3 协议。
- 软件加密加速 CPU 阈值(使用硬件和软件提高 ECDSA 和 ECDHE 密码性能)。
有关异构群集中支持的平台的更多信息,请参阅 https://docs.citrix.com/en-us/citrix-adc/current-release/clustering/support-for-heterogeneous-cluster.html。
使用 CLI 启用异构群集
在命令提示符下,键入:
set ssl parameter -heterogeneousSSLHW ENABLED
使用 GUI 启用异构群集
- 导航到 流量管理 > SSL ,然后在 设置 组中选择 更改高级 SSL 设置。
-
选择异构 SSL HW。单击确定。
基于PUSH标志的加密触发机制
基于 PSH TCP 标志的加密触发机制现在允许您执行以下操作:
- 将设置了 PSH 标志的连续数据包合并到单个 SSL 记录中,或者忽略 PSH 标志。
- 执行基于计时器的加密,其中使用
set ssl parameter -pushEncTriggerTimeout <positive_integer>
命令全局设置超时值。
使用 CLI 配置基于 PUSH 标志的加密
在命令提示符下,键入以下命令以配置基于 PUSH 标志的加密并验证配置:
set ssl vserver <vServerName> [-pushEncTrigger <pushEncTrigger>]
show ssl vserver
<!--NeedCopy-->
示例:
set ssl vserver vserver1 -pushEncTrigger always
Done
sh ssl vserver vserver1
Advanced SSL configuration for VServer vserver1:
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: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Push Encryption Trigger: Always
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
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
使用 GUI 配置基于 PUSH 标志的加密
- 导航到 流量管理 > 负载平衡 > 虚拟服务器 ,然后打开 SSL 虚拟服务器。
- 在“SSL 参数”部分的“推送加密触发器”列表中,选择一个值。
支持 TLS1.2 签名哈希算法
NetScaler 设备完全符合 TLS1.2 签名哈希扩展的要求。
在 SSL 握手中,客户端会发送受支持的签名哈希算法列表。客户端通过使用“signature_althorms”扩展向服务器指示可能在 SSL 握手消息(SKE 和 CCV)中使用哪些签名哈希算法对。此扩展的“扩展名_data”字段在客户端 Hello 消息中包含一个“支持的_signature_算法”值。如果服务器支持这些签名哈希算法之一,SSL 握手将继续。如果服务器不支持这些算法中的任何一种,则会断开连接。
同样,如果服务器请求客户端证书进行客户端身份验证,则证书请求消息将包含“supported_signature_算法”值。客户端证书是根据此签名哈希算法选择的。
注意:
NetScaler 设备充当客户端的服务器和后端服务器的客户端。
该设备在前端仅支持 RSA-SHA1 和 RSA-SHA256,在后端仅支持 RSA-MD5、RSA-SHA1 和 RSA-SHA256。
MPX/SDX/VPX 设备支持以下签名哈希组合。在 SDX 设备上,如果将 SSL 芯片分配给 VPX 实例,则适用 MPX 设备的密码支持。否则,将适用 VPX 实例的正常密码支持。
- 在 VPX 实例和没有 N3 芯片的 MPX/SDX 设备上:
- RSA-MD5
- RSA-SHA1
- RSA-SHA224
- RSA-SHA256
- RSA-SHA384
- RSA-SHA512
- 在带有 N3 芯片的 MPX/SDX 设备上:
- RSA-MD5
- RSA-SHA1
- RSA-SHA224
- RSA-SHA256
- RSA-SHA384
- RSA-SHA512
- ECDSA-SHA1
- ECDSA-SHA224
- ECDSA-SHA256
- ECDSA-SHA384
- ECDSA-SHA512
默认情况下,所有签名哈希算法都处于启用状态。但是,使用以下命令只能启用少数签名哈希算法:
set ssl parameter -sigDigestType <sigDigestType>
Parameters
sigDigestType
Signature digest algorithms supported by the appliance. The platform determines the list of algorithms supported by default.
On VPX: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-
SHA512
On MPX with N3 cards: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-
SHA256 RSA-SHA384 RSA-SHA512 ECDSA-SHA1 ECDSA-SHA224 ECDSA-
SHA256 ECDSA-SHA384 ECDSA-SHA512
Other MPX Platforms: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-
SHA512.
set ssl parameter -sigDigestType RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-SHA512
<!--NeedCopy-->
验证对等证书
根据 RFC 5246 的规定,对等证书必须使用客户端 Hello 扩展中包含的签名哈希算法之一进行签名。您可以使用 strictSigDigestCheck
参数。根据客户端发送的签名哈希列表,如果启用 strictSigDigestCheck
,设备将返回由 Client Hello 扩展中提到的签名哈希算法之一签名的证书。如果对等方没有适当的证书,则连接将被断开。如果禁用此参数,则不会在对等证书中检查签名哈希。
您可以在 SSL 虚拟服务器和服务上配置严格的签名摘要检查。如果在 SSL 虚拟服务器上启用此参数,则服务器发送的服务器证书必须由 Client Hello 扩展中列出的签名哈希算法之一签名。如果启用了客户端身份验证,则必须使用服务器发送的证书请求中列出的签名哈希算法之一对服务器收到的客户端证书进行签名。
如果在 SSL 服务上启用此参数,则客户端接收的服务器证书必须由 Client Hello 扩展中列出的签名哈希算法之一签名。必须使用证书请求消息中列出的签名哈希算法之一对客户端证书进行签名。
如果启用了默认配置文件,则可以使用它在 SSL 虚拟服务器、SSL 服务和 SSL 配置文件上配置严格的签名摘要检查。
使用 CLI 在 SSL 虚拟服务器、服务或配置文件上配置严格的签名摘要检查
在命令提示符下,键入:
set ssl vserver <vServerName> -strictSigDigestCheck ( ENABLED | DISABLED )
set ssl service <serviceName> -strictSigDigestCheck ( ENABLED | DISABLED )
set ssl profile <name>-strictSigDigestCheck ( ENABLED | DISABLED )
Parameters
strictSigDigestCheck
Check whether peer entity certificate is signed using one of the signature-hash algorithms supported by the NetScaler appliance.
Possible values: ENABLED, DISABLED
Default: DISABLED
<!--NeedCopy-->
示例:
set ssl vserver v1 –strictSigDigestCheck Enabled
set ssl service s1 –strictSigDigestCheck Enabled
set ssl profile p1 –strictSigDigestCheck Enabled
<!--NeedCopy-->
重要:
如果在设备上配置了 DH、ECDHE 或 ECDSA 密码,则必须使用客户端列表和设备上配置的列表共有的签名哈希对 SKE 消息进行签名。如果没有通用的签名哈希,则连接将被删除。
为 ADC 管理员界面访问权限配置 SSL
要对配置实用程序进行 HTTPS 访问并保护远程过程调用,需要证书-密钥对。在 NetScaler MPX 设备或 VPX 虚拟设备上,证书密钥对会自动绑定到内部服务。但是,浏览器可能不信任此证书。您必须在浏览器中上载有效的 CA 证书,才能在没有任何错误的情况下完成身份验证。
使用 CLI 配置安全 HTTPS
要使用 CLI 配置安全 HTTPS,请执行以下步骤:
-
添加证书-密钥对。
add certkey server -cert servercert -key serverkey <!--NeedCopy-->
-
将此证书密钥对绑定到以下内部服务。
bind ssl service nshttps-127.0.0.1-443 -certkeyname server bind ssl service nshttps-::11-443 -certkeyname server <!--NeedCopy-->
使用 GUI 配置安全 HTTPS
要使用 GUI 配置安全 HTTPS,请按照以下步骤进行操作:
- 导航到 Traffic Management(流量管理)> SSL > Certificates(证书)。
- 在详细信息窗格中,单击“安装”。
- 在“安装证书”对话框中,键入证书详细信息。
- 单击“安装”,然后单击“关闭”。
- 导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)> Services(服务)。
- 在详细信息窗格的“操作”选项卡上,单击“内部服务”。
- 从列表中选择
nshttps-127.0.0.1-443
,然后单击打开。 - 在 SSL 设置选项卡的可用窗格中,选择步骤 4 中创建的证书,单击绑定,然后单击确定。
- 从列表中选择
nshttps-::11-443
,然后单击打开。 - 在 SSL 设置选项卡的可用窗格中,选择步骤 4 中创建的证书,单击绑定,然后单击确定。
- 单击确定。