Let’s Encrypt 是免费、自动化(自动颁发和续订证书)和开放的证书颁发机构。本节详细阐述了将 Let's EncryptNSX Advanced Load Balancer 集成在一起的配置摘要。

SSL/TLS 协议有助于将 Internet 连接保持安全。它保护在两个计算机、系统或设备之间发送的任何敏感数据,从而防止入侵者读取和修改在两个计算机/系统/设备之间传输的任何信息。SSL/TLS 证书有助于在两个计算机、系统或设备之间建立安全的加密连接。不过,存在一些有关 SSL/TLS 证书的难题:

  • 手动获取证书

  • 与 CA 签名的证书相关的成本

Let's Encrypt 解决了所有上述难题。有关该内容的更多信息,请参见 Let's Encrypt

使用 Let's Encrypt

在颁发证书之前,Let's Encrypt 服务器使用 ACME 标准定义的“质询”验证请求者是否控制该证书中的域名。Let's Encrypt 使用 ACME 协议验证您是否控制给定的域名并向您颁发证书。代理/客户端可以通过不同的方法证明拥有域的控制权:

  • 在域下置备 DNS 记录(根据 CSR 公用名称)。

  • 在已知 URI 下置备 HTTP 资源。

注:

NSX Advanced Load Balancer 支持使用 HTTP-01 质询验证域。

HTTP-01 质询

  • Let's Encrypt 向 ACME 客户端提供一个令牌,ACME 客户端将一个文件放在 Web 服务器上的 http://<YOUR_DOMAIN>/well-known/acme-challenge/<TOKEN> 中。该文件包含令牌以及帐户密钥的指纹。

  • 在 ACME 客户端告诉 Let's Encrypt 该文件准备就绪后,Let’s Encrypt 尝试检索该文件(可能从多个有利位置中尝试多次)。

  • 如果验证检查从 Web 服务器中获得正确的响应,则认为验证成功并颁发证书。

注:

由于 Let's Encrypt CA 在端口 80 上发送 HTTP-01 质询,因此,必须在防火墙上打开端口 80,并且 Let's Encrypt CA 必须能够访问用户的网络(部署 NSX Advanced Load Balancer 系统的网络,Let's Encrypt CA 在端口 80 上通过公用网络连接到用户的 NSX Advanced Load Balancer 系统)。

如果在 NSX Advanced Load Balancer 中具有侦听端口 80 的虚拟服务,则脚本不会创建虚拟服务,否则,脚本自动为侦听端口 443/自定义 SSL 端口的相应虚拟服务创建侦听端口 80 的虚拟服务。

有关域验证的更多信息,请参见以下 URL:

配置 Let's Encrypt

以下是将 Let's EncryptNSX Advanced Load Balancer 集成在一起的配置摘要。

  1. 获取有助于获取和续订证书的脚本。

  2. 将脚本添加为 NSX Advanced Load Balancer 系统上的控制器脚本。

  3. 为客户添加用户帐户(仅具有有限的访问权限)。

  4. NSX Advanced Load Balancer 系统上创建证书管理配置文件。

  5. NSX Advanced Load Balancer 系统上添加虚拟服务。

  6. 确保 FQDN 解析为公用 IP,并在防火墙上打开端口 80

  7. 创建 CSR 并选择配置的证书管理配置文件。

  8. 检查证书列表,Let's Encrypt CA 将推送签名的证书。

  9. 将证书与配置的虚拟服务相关联。

注:

只有在使用 DNS-01 Challenge 时,才需要执行步骤 1、2 和 4。对于 HTTP-01 Challenge证书管理配置文件已在步骤 7 中作为下拉菜单提供。另外,对于 DNS-01 Challenge,您必须提供自己的 add_dns_text_recordremove_dns_text_record 函数实施。

配置 NSX Advanced Load Balancer 系统

要为 NSX Advanced Load Balancer 配置 Let's Encrypt,请执行以下操作:

  1. letsencrypt_mgmt_profile 下载相应脚本。要下载文件,请单击原始选项。复制提供的代码。

  2. NSX Advanced Load Balancer Controller 中,导航到模板 > 脚本 > ControlScript,然后单击创建

  3. 添加有意义的名称,并将步骤 1 中复制的代码粘贴到导入或粘贴控制脚本字段中。保存配置。

  4. 导航到 管理 > 角色,以配置自定义角色。对于该角色,确保为虚拟服务、应用程序配置文件、SSL/TLS 证书和证书管理配置文件启用了读写访问权限。

  5. 添加一个用户,输入所需的所有详细信息,然后选择配置的自定义角色。

  6. 导航到模板 > 安全性 > 证书管理,然后单击创建

  7. 输入一个有意义的名称,选择配置的控制脚本并启用自定义参数,然后添加自定义参数,如以下示例中所示:

    注:

    建议不要使用 admin 帐户。请始终添加具有自定义角色(拥有有限访问权限)的用户帐户。

  8. 导航到模板 > 安全性 > SSL/TLS 证书,单击创建,然后选择应用程序证书

  9. 输入公用名称,选择配置的证书管理配置文件,然后添加所有相关详细信息并保存配置。

注:

确保为虚拟服务配置了应用程序域名以作为证书的公用名称 (Common Name, CN)。证书 CN 必须与虚拟服务的应用程序域名相匹配。FQDN(证书 CN 或虚拟服务的应用程序域名)必须解析为 IP 地址,并且域必须可访问。

几分钟后,查看证书列表。您可以看到 Let’s Encrypt CA 推送的证书。将证书与配置的虚拟服务相关联。

日志

要查看日志,请为配置的虚拟服务启用非重要日志并生成证书。以下是日志示例。



自动续订证书

从控制器属性中,可以配置 ssl_certificate_expiry_warning_days。默认情况下,ssl_certificate_expiry_warning_days 可以是 30 天、7 天和 1 天。可根据需要修改此设置。如果需要续订证书(根据配置的设置),相应脚本将激活并自动处理证书续订。

注:

Let’s Encrypt CA 设有速率限制。因此,请确保证书续订不会影响速率限制。

为导入的证书自动续订证书

对于以下内容,可以为导入的证书自动续订证书:

  • NSX Advanced Load Balancer 上生成的 CSR,由 Let's Encrypt 进行签名,然后导入到 NSX Advanced Load Balancer 上。如果为证书配置了证书管理配置文件,则会在倒数第二个间隔中尝试续订证书。默认情况下,控制器在过期前 30 天、7 天和 1 天生成事件。在该设置中,将在过期前 7 天尝试续订证书。

  • NSX Advanced Load Balancer 上导入的证书(由 Let's EncryptNSX Advanced Load Balancer 外部手动签名)和密钥(CSR 不是在 NSX Advanced Load Balancer 上创建的)。

在生成 CSR 并由 Let's Encrypt CA 签名后,使用该新生成的证书更新用户上载的证书。该证书将进入自动默认续订周期。

配置强制证书续订

您可以为以下内容配置按需强制证书续订:

NSX Advanced Load Balancer 上生成的 CSR,由 Let's Encrypt 手动签名,然后导入到 NSX Advanced Load Balancer 上。证书续订是使用 API 端点从后端完成的:

/api/sslkeyandcertificate/{uuid}/renew

NSX Advanced Load Balancer 22.1.3 版本开始,支持通过 UI 进行强制证书续订。

  1. 要配置强制证书续订,请执行以下操作:

  2. NSX Advanced Load Balancer UI 中,导航到模板 > 安全性 > SSL/TLS 证书,选择所需的证书,然后单击续订图标。



  3. 在显示的确认提示中,单击是,继续

  4. 在成功续订证书后,将显示以下消息:



Let's Encrypt 证书生命周期管理的本机支持

NSX Advanced Load Balancer 22.1.3 开始,默认情况下,可以在创建 CSR 时附加 Let's Encrypt 证书管理配置文件。在控制器引导时,默认提供 Let's Encrypt 的证书管理配置文件。配置名称、租户和密码。

可以在应用程序配置文件的证书管理配置文件字段中选择 Let's Encrypt 管理配置文件。

注:

对于本机支持,目前仅在 NSX Advanced Load Balancer 中提供 HTTP-01 质询,不支持 DNS-01 质询。

其他信息

  • 有关速率限制的更多信息,请参见速率限制

  • 有关 SSL/TLS 证书的更多信息,请参见 SSL 证书