NSX Advanced Load Balancer 支持在虚拟服务中终止客户端 SSL 和 TLS 连接,这要求它向客户端发送证书,以对站点进行身份验证并建立安全通信。

处理安全连接的虚拟服务需要使用以下内容:

  • SSL/TLS 配置文件

    • 它确定支持的密码和版本。有关 SSL/TLS 配置文件的更多信息,请参见VMware NSX Advanced Load Balancer 配置指南》中的 SSL/TLS 配置文件主题。

  • SSL 证书

    • 它提供给连接到站点的客户端。

    • SSL 证书可用于提供给连接到 NSX Advanced Load Balancer Web 接口或 API 的管理员,以及在 SE 到服务器的加密需要进行客户端 (SE) 身份验证时由 NSX Advanced Load Balancer (SE) 将其提供给服务器。

模板 > 安全性 > SSL/TLS 证书上的 SSL/TLS 证书页面中,可以导入和导出 SSL 证书或证书请求以及生成新的 SSL 证书或证书请求。新创建的证书可以由 NSX Advanced Load Balancer 进行自签名或作为证书签名请求 (Certificate Signing Request, CSR) 进行创建,必须将该请求发送到受信任的证书颁发机构 (CA) 以生成受信任的证书。

  • 创建自签名证书将生成证书和相应的私钥。

  • 在提供匹配的密钥后,导入的现有证书才会生效。

  • NSX Advanced Load Balancer 支持 PEM 和 PKCS #12 格式的证书。

SSL/TLS 证书页面

导航到模板 > 安全性 > SSL/TLS 证书以打开 SSL/TLS 证书页面。该选项卡包括以下功能:

  • 搜索:在对象列表中搜索。

  • 创建:在下拉菜单中显示证书列表以创建证书。

  • 编辑:打开编辑证书窗口。只能编辑没有相应密钥的不完整证书。

  • 导出:下箭头图标导出证书和相应的私钥。

  • 删除:只有在证书当前未分配给虚拟服务时,才能删除该证书。将显示一条错误消息以指示引用该证书的虚拟服务。

该选项卡上的表包含每个证书的以下信息:

  • 名称:它显示证书的名称。如果将鼠标悬停在证书名称上,将显示已自动与该证书关联的任何中间证书。

  • 状态:它显示证书的状态。“绿色”状态表示良好,“黄色/橙色/红色”状态表示证书即将过期或已过期,“灰色”表示证书不完整。

  • 公用名称:它显示证书适用的站点的完全限定名称。该条目必须与客户端在其浏览器中输入的主机名匹配,才能将该站点视为受信任的站点。

  • 颁发者名称:它显示证书颁发机构的名称。

  • 算法:它将 EC(椭圆曲线)或 RSA 显示为算法。

  • 自签名:它显示证书由 NSX Advanced Load Balancer 自签名还是由证书颁发机构签名。

  • 有效期至:它显示证书的过期日期和时间。

创建证书

导航到模板 > 安全性 > SSL/TLS 证书。单击创建以打开新建证书 (SSL/TLS) 窗口。

在创建新的证书时,您可以选择任何以下证书:

  • 根/中间 CA 证书:该证书用于自动创建应用程序证书的证书链。除了通过文件导入证书或粘贴文本以外,没有其他配置选项。根/中间证书将显示在 SSL 证书页面底部的单独表格中。在导入依赖于链中间证书的应用程序证书之前,建议导入根/中间证书。

  • 应用程序证书:该证书用于 NSX Advanced Load Balancer 上的正常 SSL 终止和解密。该选项还用于为 NSX Advanced Load Balancer 导入或创建客户端证书,以便在后端服务器需要对自身进行身份验证时向其提供证书。

  • 控制器证书:该证书用于控制器集群的 GUI 和 API。上载后,通过 管理 > 设置 > 访问设置选择认证。

要创建新的证书,请执行以下步骤:

  • 名称:指定证书的名称。

  • 类型:从下拉菜单中选择要创建的证书类型。选项如下所示:

    • 自签名:快速创建由 NSX Advanced Load Balancer 签名的测试证书。客户端浏览器将显示错误,指出证书不受信任。如果 HTTP 应用程序配置文件启用了 HTTP 严格传输安全 (HSTS),客户端将无法使用自签名证书访问站点。

    • CSR:先创建证书请求以创建有效的证书。该请求必须发送到一个证书颁发机构,该颁发机构将发回一个有效的证书,必须将该证书导回到 NSX Advanced Load Balancer 中。

    • 导入:导入从证书颁发机构接收或从另一个服务器导出的完成证书。

  • 公用名称:指定站点的完全限定名称,例如 www.vmware.com。该条目必须与客户端在浏览器中输入的主机名匹配,才能将该站点视为受信任的站点。

  • 输入您创建的证书类型所需的信息:

    • 自签名证书

    • CSR 证书

    • 导入证书

注:

可以使用 UI 启用和配置 OCSP 装订。有关更多信息,请参见VMware NSX Advanced Load Balancer 配置指南》中的 NSX Advanced Load Balancer 中的 OCSP 装订主题。

自签名证书

NSX Advanced Load Balancer 可以生成自签名证书。客户端浏览器不信任这些证书,并警告用户虚拟服务的证书不是信任链的一部分。

自签名证书非常适合测试或开发环境,其中,管理员控制客户端,并且可以安全地绕过浏览器安全警示。公共网站不能使用自签名证书。

如果您已从新建证书窗口的类型下拉菜单中选择自签名选项,请指定以下详细信息:

  • 公用名称 - 指定站点的完全限定名称,例如 www.vmware.com。要使站点视为可信,此条目必须与客户端在浏览器中输入的主机名匹配。

  • 组织:注册证书的公司或实体,例如 NSX Advanced Load Balancer Networks, Inc.(可选)。

  • 组织单位:组织中负责证书的组,例如开发组(可选)。

  • 国家/地区:组织所在的国家/地区(可选)。

  • 省/直辖市/自治区名称:组织所在的省/直辖市/自治区(可选)。

  • 市/县:组织所在的城市(可选)。

  • 电子邮件:证书的电子邮件联系人(可选)。

  • 主体备用名称 (SAN) - 您可以通过主体备用名称 (SAN) 指定受单个 SSL 证书保护的其他主机名,例如 example.comexample.org。它们实质上是证书中指定的主体的替代身份。

  • 算法:选择 EC(椭圆曲线)或 RSA。RSA 比 EC 早并被视为不如 EC 安全,但与更广泛的旧浏览器更兼容。EC 较新、计算成本更低并且通常更安全,但还没有被所有客户端接受。NSX Advanced Load Balancer 允许每次为虚拟服务配置两个证书,RSA 和 EC 各一个证书。这样,它就可以与客户端协商最佳的算法。如果客户端支持 EC,则 NSX Advanced Load Balancer 优先使用该算法,它提供了本身支持完美前向保密以提高安全性的好处。

  • 密钥大小:选择用于握手的加密级别,如下所示:

    • 对于 RSA 证书,建议使用 2048 位。较高的值可能会提供更强的加密,但会显著增加 NSX Advanced Load Balancer 和客户端所需的 CPU 资源。要进行更强的加密,请改用 ECC 证书。

    • 建议 EC 证书使用 SECP256R1。

    较高的值可以提供更好的加密,但会增加 NSX Advanced Load Balancer 和客户端所需的 CPU 资源。

  • 启用 HSM 证书:并非在控制器或服务引擎本地存储私钥,而是将其保留在外部硬件安全模块中。该选项允许引用 HSM 配置文件,其中包含有关与 HSM 通信的信息。

  • 在指定所需的详细信息后,单击保存

CSR 证书

证书签名请求 (CSR) 是创建有效 SSL/TLS 证书时涉及的三个步骤中的第一步。请求包含与自签名证书相同的参数。不过,NSX Advanced Load Balancer 不会对完成的证书进行签名。相反,必须由客户端浏览器信任的证书颁发机构对其进行签名。

您可以从新建证书窗口的类型下拉菜单中选择 CSR 选项。证书签名请求的配置选项与自签名证书的配置选项相同。有关每个字段的定义,请参见上面的说明。

在完成后,将完成的 CSR 转发到任何受信任的证书颁发机构 (CA),例如 Thawte 或 Verisign,方法是选择添加证书弹出窗口左下角的证书签名请求。然后,直接复制证书签名请求并将其粘贴到 CA 的网站中,或者将其保存到一个文件以供以后使用。

在 CA 颁发完成的证书后,将其粘贴或上载到添加证书弹出窗口右下角的证书字段中。在该步骤完成后,才能在 NSX Advanced Load Balancer 上使用证书。

注:

CA 可能需要几天的时间才能返回完成的证书。同时,您可以关闭新建证书窗口以返回到 SSL/TLS 证书页面。将在表中显示新证书,并在“有效期至”列中带有正在等待证书注释。

在收到完成的证书时,单击证书的编辑图标以打开编辑证书,然后粘贴证书并单击保存以生成 CSR 证书。NSX Advanced Load Balancer 将自动从完成的证书中生成一个密钥。

导入证书

您可以直接将现有的 PEM 或 PKCS /#12 SSL/TLS 证书导入到 NSX Advanced Load Balancer 中(例如从另一个服务器或负载均衡器中)。证书将具有相应的私钥,也必须导入该私钥。

注:

NSX Advanced Load Balancer 自动生成自签名或 CSR 证书的密钥。

以下是导入证书的步骤:

  1. 导航到模板 > 安全性 > SSL/TLS 证书

  2. 单击创建并选择证书类型,例如应用程序证书

  3. 单击类型,然后选择导入。可以复制和粘贴或上载文件以导入证书或私钥。

  • PEM 文件 - PEM 文件包含明文 Base64 编码格式的证书或私钥。可以在单独的 PEM 文件中提供证书和私钥,也可以将其合并到单个 PEM 文件中。

  • 如果在单个 PEM 文件中提供证书和私钥,请导航到粘贴密钥文本框,然后按照下面列出的任一方法添加私钥:

    • 上载文件:单击上载文件按钮,选择 PEM 或 PKCS12 文件,然后单击验证按钮以分析该文件。如果上载成功,则会填充密钥字段。

    • 粘贴:将 PEM 密钥复制并粘贴到密钥字段中。确保不要在文本中引入额外的字符,在使用某些电子邮件客户端或富文本编辑器时,可能会发生这种情况。如果将密钥和证书作为一个文件进行复制和粘贴,请单击验证按钮以分析文本并填充证书字段。

  • 如果在两个单独的 PEM 文件中提供证书和私钥,请按照以下步骤单独导入每个文件:

    • 证书 - 复制和粘贴或上载文件以将证书添加到粘贴证书文本框中,如上所述。

    • 密钥 - 复制和粘贴或上载文件以将私钥添加到粘贴密钥字段中。

  • PKCS #12 文件 - PKCS #12 文件包含证书和密钥,PKCS #12 采用二进制格式,无法复制和粘贴该文件,因此,只能上载该文件。导航到粘贴密钥,并按照以下步骤导入 PKCS #12 文件。

  • 上载文件 - 单击导入文件按钮,选择 PKCS #12 文件,然后单击验证按钮以分析该文件。如果上载成功,将填充密钥证书字段。

  • 密钥密码短语:您还可以添加并验证密钥密码短语以对私钥进行加密。

  • 导入:选择导入以完成添加新证书和密钥的过程。将在证书中嵌入密钥,并在 NSX Advanced Load Balancer UI 中将其视为一个对象。

证书颁发机构

证书需要具有受信任的颁发机构链才被视为有效。如果使用的证书是由所有客户端浏览器已知的证书颁发机构直接生成的,则不需要提供证书链。不过,如果需要多个级别,则可能需要具有中间证书。如果站点没有提供链证书,客户端通常会遍历证书指示的路径以自行验证,但这会增加额外的 DNS 查找和初始站点加载时间。理想的情况是,将链证书与站点证书一起提供。

如果通过“证书”页面中的证书 > 导入上载链证书(确切地说,是证书颁发机构的证书),则会将其添加到证书颁发机构部分中。如果检测到链中存在下一个链接,NSX Advanced Load Balancer 将自动生成证书链。

要验证已附加到链证书的证书,请将指针悬停在页面顶部的“SSL 证书”表中的证书名称上。NSX Advanced Load Balancer 支持多个链路径。每个证书可能具有相同的 CA 颁发者,也可能链接到不同的颁发者。

SSL/TLS 配置文件

NSX Advanced Load Balancer 支持终止客户端和虚拟服务之间的 SSL 连接以及在 NSX Advanced Load Balancer 和后端服务器之间启用加密。SSL/TLS 配置文件包含接受的 SSL 版本列表以及设置了优先级的 SSL 密码列表。

在将虚拟服务配置为终止客户端 SSL/TLS 连接时,必须为虚拟服务分配 SSL/TLS 配置文件和 SSL 证书。如果您加密 NSX Advanced Load Balancer 和服务器之间的流量,则必须为池分配 SSL/TLS 配置文件。在通过基本模式创建新的虚拟服务时,将自动使用默认系统 SSL/TLS 配置文件。

可以在任何服务端口上执行 SSL 终止。不过,浏览器假设默认端口为 443。最佳做法是将一个虚拟服务配置为接受 HTTP 和 HTTPS,方法是在端口 80 上创建一个服务,选择 + 图标以添加一个额外的服务端口,然后将新服务端口设置为 443 并启用 SSL。通常,最好从 HTTP 重定向到 HTTPS,可以通过策略或使用 System-HTTP-Secure 应用程序配置文件完成该操作。

每个 SSL/TLS 配置文件包含支持的 SSL 密码和版本的默认分组,可以将这些密码和版本与 RSA 和/或椭圆曲线证书一起使用。确保您创建的任何新的 SSL/TLS 配置文件包含适用于稍后使用的证书类型的密码。NSX Advanced Load Balancer 附带的默认 SSL/TLS 配置文件提供了广泛的安全性。例如,标准配置文件适用于典型的部署。

在创建新的 SSL/TLS 配置文件或使用现有配置文件时,需要在安全性、兼容性和计算成本之间进行各种平衡。例如,扩大接受的密码和 SSL 版本列表将会提高与客户端的兼容性,但同时也会降低安全性。

注:

通过将多个 SSL 配置文件与单个虚拟服务相关联,NSX Advanced Load Balancer 可以满足客户端社区中更广泛的安全需求,并让服务引擎根据客户端的 IP 地址选择要使用的配置文件。有关更多信息,请参见本指南中的“基于客户端 IP 的 SSL 配置文件”一节。

SSL 配置文件设置

导航到模板 > 配置文件 > SSL/TLS 配置文件

  • 搜索:在对象列表中搜索。

  • 创建:打开新的应用程序或 systemprofile

  • 编辑:打开现有的配置文件以进行编辑。

  • 删除:只有在 SSL/TLS 配置文件当前未分配给虚拟服务时,才能删除该配置文件。将显示一条错误消息以指示引用该配置文件的虚拟服务。可以修改默认系统配置文件,但无法将其删除。

该选项卡上的表为每个 SSL/ TLS 配置文件提供以下信息:

  • 名称:配置文件的名称。

  • 接受的版本:配置文件接受的 SSL 和 TLS 版本。

创建 SSL 配置文件

以下是创建或编辑 SSL 配置文件的步骤:

  • 名称:指定 SSL/TLS 配置文件的唯一名称。

  • 类型:从下拉菜单中选择配置文件类型。

  • 接受的版本:从下拉菜单中选择一个或多个 SSL/TLS 版本以添加到该配置文件中。从时间顺序上讲,TLS 1.0 版是支持的最早版本,TLS 1.2 版是最新的版本。从 NSX Advanced Load Balancer 15.2 版开始,不再支持 SSL 3.0 版。一般来说,对于 SSL,旧版本具有很多已知的漏洞,而新版本具有很多未发现的漏洞。与任何安全功能一样,NSX Advanced Load Balancer 建议尽量了解安全动态特性并确保 NSX Advanced Load Balancer 始终是最新的。某些 SSL 密码依赖于支持的特定版本的 SSL 或 TLS。有关更多信息,请参见 OpenSSL

  • 接受的密码:在接受的密码字段中输入接受的密码列表。输入的每个密码都必须符合 OpenSSL 中列出的密码套件名称。将每个密码以冒号分隔。例如,AES:3DES 表示该配置文件将接受 AES 和 3DES 密码。与客户端协商密码时,NSX Advanced Load Balancer 优先按列出的顺序选择密码。您可以将 SSL/TLS 配置文件与 RSA 和椭圆曲线证书一起使用。这两种类型的证书可以使用不同类型的密码,因此,包含两种证书类型的密码是至关重要的。仅选择最安全的密码可能会在 NSX Advanced Load Balancer 上产生更高的 CPU 负载,还可能会降低与旧浏览器的兼容性。

PKI 配置文件

有关 PKI 配置文件的更多信息,请参见VMware NSX Advanced Load Balancer 配置指南》中的 PKI 配置文件PKI 配置文件设置主题。

证书管理

要创建新的证书,请执行以下步骤:

  1. 从 UI 中,导航到模板 > 安全性 > 证书管理

  2. 单击创建

  3. 新建证书管理屏幕中,输入配置文件的名称

  4. 控制脚本字段中,根据需要,选择所需的警示脚本配置。

    注:

    单击下拉菜单中的创建按钮以创建新的控制脚本(如果需要)。

  5. 如果配置文件需要将一些参数值传递给脚本,请选择启用自定义参数

  6. 输入参数的名称



    注:

    如果在上载后修改了控制脚本文件,请重新上载控制脚本以反映更改。

    Trust Anchor 服务的位置 (URL) 和该服务的登录凭据将传递给脚本。对于敏感参数(例如密码),请选中敏感复选框。

    将参数标记为敏感可以防止在 Web 界面中显示该参数的值,也可以防止 API 传递该参数的值。对于要在 CSR 创建期间动态分配的参数,请选中动态复选框。这会在配置文件中将该参数保持未分配状态。

  7. 单击保存

身份验证配置文件

身份验证配置文件允许通过 HTTP 基本身份验证在虚拟服务中配置客户端。

身份验证配置文件是通过虚拟服务的高级属性选项卡的 HTTP 基本身份验证设置启用的。

NSX Advanced Load Balancer 还支持通过 SSL 客户端证书进行客户端身份验证,这是在 HTTP 配置文件的“身份验证”部分中配置的。

身份验证配置文件设置

选择模板 > 安全性 > 身份验证配置文件以打开身份验证选项卡。该选项卡包括以下功能:

  • 搜索:在对象列表中搜索。

  • 创建:打开“创建/编辑”窗口。

  • 编辑:打开“创建/编辑”窗口。

  • 删除:只有在身份验证配置文件当前未分配给虚拟服务或 NSX Advanced Load Balancer 没有使用该配置文件进行管理身份验证时,才能删除该配置文件。

该选项卡上的表为每个授权配置文件提供以下信息:

  • 名称:配置文件的名称。

  • 类型:类型为 LDAP。

创建身份验证配置文件

要创建或编辑身份验证配置文件,请执行以下操作:



  • 名称:输入唯一的名称。

  • LDAP 服务器:添加 IP 地址以配置一个或多个 LDAP 服务器。

  • LDAP 端口:这是在与 LDAP 服务器通信时使用的服务端口。对于 LDAP,它通常为 389;对于 LDAPS (SSL),它通常为 636。

  • 使用 TLS 的安全 LDAP:启用 startTLS 以与 LDAP 服务器进行安全通信。这可能需要更改服务端口。

  • 基本 DN:LDAP 目录基本标识名。在需要提供 DN 但未填充 DN(如用户或组搜索 DN)时用作默认设置。

  • 匿名绑定:绑定到 LDAP 服务器以验证用户身份验证凭据所需的最低 LDAP 设置。在您无权访问 LDAP 服务器上的管理员帐户时,该选项是非常有用的。

    • 用户 DN 模式:在将用户令牌替换为实际用户名后,将使用 LDAP 用户 DN 模式绑定 LDAP 用户。该模式必须与 LDAP 服务器中的用户记录路径相匹配。例如,cn=,ou=People,dc=myorg,dc=com 是一种模式,其中,我们希望查找“People”OU 中的所有用户记录。在 LDAP 中搜索特定用户时,我们将令牌替换为用户名。

    • 用户令牌:在用户 DN 模式中将 LDAP 令牌替换为实际用户名。例如,在配置为“cn=-user-,ou=People,dc=myorg,dc=com”的用户 DN 模式中,令牌值必须为 -user-。

    • 用户 ID 属性:LDAP 用户 ID 属性是唯一地标识单个用户记录的登录属性。此属性的值必须与在登录提示中所使用的用户名相匹配。

    • 用户属性:要在成功的用户绑定上获取的 LDAP 用户属性。这些属性仅用于调试目的。

  • 管理员绑定:在 LDAP 中查询用户或组时,将使用在下面的 LDAP 目录设置中配置的 LDAP 管理员凭据将 NSX Advanced Load Balancer 绑定为管理员。

    • 管理员绑定 DN:LDAP 管理员的完整 DN。管理员绑定 DN 用于绑定到 LDAP 服务器。管理员必须具有足够的特权以在用户搜索 DN 中搜索用户,或者在组搜索 DN 中搜索组。

    • 管理员绑定密码:管理员密码。不处理密码过期或更改问题。密码在 REST API 和 CLI 中是隐藏的。

    • 用户搜索 DN:LDAP 用户搜索 DN 是在 LDAP 目录中搜索给定用户的根域。仅允许在此 LDAP 目录子树中存在的用户记录进行身份验证。如果未配置该值,则使用基本 DN 值。

    • 组搜索 DN:LDAP 组搜索 DN 是在 LDAP 目录中搜索给定组的根域。将仅检查该 LDAP 目录子树中存在的匹配组的用户成员资格。如果未配置该值,则使用基本 DN 值。

    • 用户搜索范围:LDAP 用户搜索范围定义从用户搜索 DN 开始搜索用户的深度。选项包括在基本 DN 中搜索、搜索下一级或搜索整个子树。默认选项是在用户搜索 DN 下面一级搜索。

    • 组搜索范围:LDAP 组搜索范围定义从组搜索 DN 开始搜索组的深度。默认值是整个子树。

    • 用户 ID 属性:LDAP 用户 ID 属性是唯一地标识单个用户记录的登录属性。此属性的值必须与在登录提示中所使用的用户名相匹配。

    • 组成员属性:标识每个组成员的 LDAP 组属性。例如,member 和 memberUid 是常用的属性。

    • 用户属性:要在成功的用户绑定上获取的 LDAP 用户属性。这些属性仅用于调试。

  • 插入客户端用户 ID 的 HTTP 标头:在将客户端请求发送到目标服务器之前,在客户端请求中插入 HTTP 标头。该字段用于命名标头。该值是客户端的用户 ID。该相同用户 ID 值还用于填充虚拟服务日志中的用户 ID 字段。

  • 所需的用户组成员资格:用户必须是这些组的成员。每个组由 DN 标识。例如,cn=testgroup,ou=groups,dc=LDAP,dc=example,dc=com

  • 身份验证凭据缓存过期时间:缓存客户端身份验证时允许的最大时间长度。

  • 组成员属性为完整 DN:组成员条目包含完整 DN,而不仅仅是用户 ID 属性值。