Let’s Encrypt 是免费、自动化(自动颁发和续订证书)和开放的证书颁发机构。本节详细阐述了将 Let's Encrypt 与 NSX 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 Encrypt 与 NSX Advanced Load Balancer 集成在一起的配置摘要。
获取有助于获取和续订证书的脚本。
将脚本添加为 NSX Advanced Load Balancer 系统上的控制器脚本。
为客户添加用户帐户(仅具有有限的访问权限)。
在 NSX Advanced Load Balancer 系统上创建证书管理配置文件。
在 NSX Advanced Load Balancer 系统上添加虚拟服务。
确保 FQDN 解析为公用 IP,并在防火墙上打开端口
80
。创建 CSR 并选择配置的证书管理配置文件。
检查证书列表,Let's Encrypt CA 将推送签名的证书。
将证书与配置的虚拟服务相关联。
只有在使用 DNS-01 Challenge
时,才需要执行步骤 1、2 和 4。对于 HTTP-01 Challenge
,证书管理配置文件已在步骤 7 中作为下拉菜单提供。另外,对于 DNS-01 Challenge
,您必须提供自己的 add_dns_text_record
和 remove_dns_text_record
函数实施。
配置 NSX Advanced Load Balancer 系统
要为 NSX Advanced Load Balancer 配置 Let's Encrypt,请执行以下操作:
从 letsencrypt_mgmt_profile 下载相应脚本。要下载文件,请单击原始选项。复制提供的代码。
在 NSX Advanced Load Balancer Controller 中,导航到 ,然后单击创建。
添加有意义的名称,并将步骤 1 中复制的代码粘贴到导入或粘贴控制脚本字段中。保存配置。
-
导航到,以配置自定义角色。对于该角色,确保为虚拟服务、应用程序配置文件、SSL/TLS 证书和证书管理配置文件启用了读写访问权限。
-
添加一个用户,输入所需的所有详细信息,然后选择配置的自定义角色。
导航到创建。
,然后单击输入一个有意义的名称,选择配置的控制脚本并启用自定义参数,然后添加自定义参数,如以下示例中所示:
注:建议不要使用 admin 帐户。请始终添加具有自定义角色(拥有有限访问权限)的用户帐户。
导航到创建,然后选择应用程序证书。
,单击输入公用名称,选择配置的证书管理配置文件,然后添加所有相关详细信息并保存配置。
确保为虚拟服务配置了应用程序域名以作为证书的公用名称 (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 Encrypt 在 NSX 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 进行强制证书续订。
要配置强制证书续订,请执行以下操作:
从 NSX Advanced Load Balancer UI 中,导航到 ,选择所需的证书,然后单击续订图标。
在显示的确认提示中,单击是,继续。
在成功续订证书后,将显示以下消息:
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 质询。