mod_md
描述: | 跨虚拟主机管理域,通过 ACME 协议进行证书配置 |
状态: | 延期 |
模块标识符: | md_module |
源文件: | mod_md.c |
兼容性: | 可在 version 2.4.30 及更高版本中使用 |
摘要
此模块管理一个或多个虚拟主机的域的 common properties。它的主要功能是使用 ACME 协议(RFC 8555)来自动化证书配置。模块将在到期前更新证书,以解决互联网服务中断的问题。有一些方法可以监视所有托管域和配置的状态,这些托管域和配置将在续订,到期和错误时运行您自己的通知命令。
默认的 ACME 证书 Authority 是我们加密吧,但可以配置另一个支持该协议的 CA.
这个模块是实验性的。相对于其他标准模块,其行为,指令和默认值在发布之间会发生更多变化。建议用户查阅“CHANGES”文件以获取可能的更新。
简单的 configuration example:
VirtualHost context 中的 TLS
MDomain example.org <VirtualHost *:443> ServerName example.org DocumentRoot htdocs/a SSLEngine on # no certificates specification </VirtualHost>
此设置将在服务器启动时联系我们加密吧以请求域的证书。如果 Let's Encrypt 可以验证域的所有权,则模块将检索证书及其链,将其存储在本地文件系统中(请参阅MDStoreDir),并在下次重新启动时将其提供给mod_ssl。
当服务器已经运行时会发生这种情况。所有其他主机将继续像以前一样工作。虽然证书不可用,但对托管域的请求将以“503 Service Unavailable”回答。
先决条件
该模块也需要加载mod_watchdog。
使用 Let's Encrypt 证书 sign-up 和续订要求您的服务器可以在 port 80(外部 http:))上访问。替代方法 port 443(https:)目前因安全原因而被禁用(状态来自 2018-01-14)。
该模块将从 Let's Encrypt 提供的方法中选择。如果 LE 在将来的某一点决定再次 re-enable,mod_md 将在适当的时候使用它。
但就目前而言,只有 port 80 变体可用(称为“http-01”)。只有当 LE 可以通过 port 80 到达您的服务器时 mod_md 才能为您工作。至少现在,至少。
如果您不想再在 port 80 上提供任何网站,您可以将其保持打开状态,并将所有请求重定向到您的 https:网站。使用下面描述的MDRequireHttps以方便的方式执行此操作。这将继续回答来自 Let's Encrypt 的 http:challenge。
通配符证书
对于那些 version 2.x 的mod_md``. But they are not straight-forward. Let's Encrypt requires the
dns-01 挑战验证,可以使用通配符证书。没有其他人认为足够好。
这里的困难是 Apache 不能自己做到这一点。(这也是一种安全性好处,因为破坏 web 服务器或它的通信路径是dns-01
保护的场景)。正如 name 所暗示的那样,dns-01
要求您显示包含某些质询数据的域的某些特定 DNS 记录。所以你需要_write你的域名的 DNS 记录。
如果您知道如何操作,可以将其与mod_md
集成。假设您在/usr/bin/acme-setup-dns
中配置了一个脚本,您可以使用以下命令配置 Apache:
MDChallengeDns01 /usr/bin/acme-setup-dns
和 Apache 将在需要 setup/teardown 域的 DNS 质询 record 时调用此脚本。
假设您想要*.mydomain.com
的证书,mod_md 将调用:
/usr/bin/acme-setup-dns setup mydomain.com challenge-data # this needs to remove all existing DNS TXT records for # _acme-challenge.mydomain.com and create a new one with # content "challenge-data"
然后它会打电话
/usr/bin/acme-setup-dns teardown mydomain.com # this needs to remove all existing DNS TXT records for # _acme-challenge.mydomain.com
监控
Apache 有一个用于监控的标准模块:mod_status。 mod_md 提供了一个部分,可以轻松监控您的域名。
您会看到按字母顺序列出所有 MD,它们包含的域名,总体状态,到期时间和特定设置。这些设置显示您选择的续订时间(或默认值),使用的 CA 等。
“续订”列将显示证书续订的活动和错误说明。这应该让人们更容易找到一切是否正常或出了什么问题。
如果 MD 出现错误,也会在此处显示。这让您可以在不挖掘服务器日志的情况下评估问题。
还有一个新的'md-status'处理程序可用于以 JSON 格式从'server-status'为您提供 MD 信息。您将其配置为
<Location "/md-status"> SetHandler md-status </Location>
在你的服务器上。与“server-status”一样,您需要为此添加授权。
如果您只想检查特定域的 JSON 状态,只需将其附加到您的状态网址:
> curl https://<yourhost>/md-status/another-domain.org { "name": "another-domain.org", "domains": [ "another-domain.org", "www.another-domain.org" ], ...
更新域时,此 JSON 状态还显示 log 活动:
{ "when": "Wed, 19 Jun 2019 14:45:58 GMT", "type": "progress", "detail": "The certificate for the managed domain has been renewed successfully and can be used. A graceful server restart now is recommended." },{ "when": "Wed, 19 Jun 2019 14:45:58 GMT", "type": "progress", "detail": "Retrieving certificate chain for test-901-003-1560955549.org" },{ "when": "Wed, 19 Jun 2019 14:45:58 GMT", "type": "progress", "detail": "Waiting for finalized order to become valid" },{ "when": "Wed, 19 Jun 2019 14:45:50 GMT", "type": "progress", "detail": "Submitting CSR to CA for test-901-003-1560955549.org" }, ...
您还可以在暂存中的文件job.json
中找到此信息,并在激活时显示域目录。这允许您在 time 中的任何稍后时间点检查这些。
此外,还有MDCertificateStatus可以访问 JSON 格式的相关证书信息。
MDBaseServer 指令
描述: | 控制是否可以管理基本服务器或仅管理虚拟主机。 |
句法: | MDBaseServer on\|off |
默认: | MDBaseServer off |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
控制基本服务器,所有 VirtualHosts 之外的服务器是否应由 mod_md 管理。默认情况下,它不会。因为它可能令人困惑 side-effects。建议您拥有所有托管域的虚拟主机,并且不要依赖 global,回退服务器 configuration。
MDCAChallenges 指令
描述: | 用于证明域名所有权的 ACME 质询类型。 |
句法: | MDCAChallenges name[ name ...] |
默认: | MDCAChallenges tls-alpn-01 http-01 dns-01 |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
在证明域所有权时设置挑战类型及其执行 order。名称是协议特定的。 Let 的加密实现的当前 ACME 协议 version 定义了 mod_md 支持的三种挑战类型。默认情况下,它会在可用时尝试 port 443 上的那个。
MDCertificateAgreement 指令
描述: | 您确认您已接受证书 Authority 的服务条款。 |
句法: | MDCertificateAgreement accepted |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
当您使用 mod_md 获取证书时,您将成为 CA 的客户(e.g.让我们加密)。这意味着您需要阅读并同意其服务条款,以便您了解它们提供的内容以及它们可能排除或要求您提供的内容。 mod_md 本身不能同意这样的事情。
MDCertificateAuthority 指令
描述: | ACME 证书 Authority 服务的 URL。 |
句法: | MDCertificateAuthority url |
默认: | MDCertificateAuthority https://acme-v02.api.letsencrypt.org/directory |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
CA 提供其服务的 URL。
我们现在加密提供四个这样的 URL。两个用于 ACME 协议的自身 legacy version,通常命名为 ACMEv1。两个用于 RFC 8555 version,名为 ACMEv2。
每个 version 都有 2 个 endpoints,因为它们是一个 production 端点和一个用于测试的“staging”端点。测试端点的工作原理相同,但不会为您提供浏览器识别的证书。但是,它也有非常宽松的速率限制。这允许重复测试服务而不会阻塞自己。
LE 分段设置
MDCertificateAuthority https://acme-staging-v02.api.letsencrypt.org/directory
MDCertificateFile 指令
描述: | 为 MD 指定静态证书文件。 |
句法: | MDCertificateFile path-to-pem-file |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
这在MDomainSet中使用,并指定包含受管域的证书链的文件。匹配的 key 通过MDCertificateKeyFile指定。
例
<MDomain mydomain.com> MDCertificateFile /etc/ssl/my.cert MDCertificateKeyFile /etc/ssl/my.key </MDomain>
这相当于 mod_ssl 了 SSLCertificateFile指令。它有几个用途。
如果要将现有域(使用静态 files)迁移到自动化 Let 的加密证书,请执行以下操作。您定义MDomainSet,在此处添加 files 并从 VirtualHosts 中删除了 SSLCertificateFile。
这将为您提供与之前相同的功能,在 configuration 中可能不会重复 lines。然后你可以添加MDRenewMode'always',模块将在文件到期之前获得一个新的证书。完成后,删除MDCertificateFile并重新加载服务器。
另一个用例是您使用另一个 ACME 客户端续订 Let 的加密证书,例如,优秀的certbot。然后让你的 MD 指向 certbot 的 files,并让它们一起工作。
MDCertificateKeyFile 指令
描述: | 为静态证书指定静态私有 key。 |
句法: | MDCertificateKeyFile path-to-file |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
这在MDomainSet中使用,并指定保存托管域的私有 key 的文件。匹配证书通过MDCertificateFile指定。
这相当于 mod_ssl 了 SSLCertificateKeyFile指令。
MDCertificateProtocol 指令
描述: | 与证书 Authority 一起使用的协议。 |
句法: | MDCertificateProtocol protocol |
默认: | MDCertificateProtocol ACME |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
指定要使用的协议。目前,仅支持ACME
。
MDCertificateStatus 指令
描述: | 公开 JSON 中的公共证书信息。 |
句法: | MDCertificateStatus on\|off |
默认: | MDCertificateStatus on |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
启用后,“https://domain/.httpd/certificate-status”中的托管域中的资源可用,它返回当前和更新证书的 JSON 文档列表 key properties(如果可用)。
例
{ "valid-until": "Thu, 29 Aug 2019 16:06:35 GMT", "valid-from": "Fri, 31 May 2019 16:06:35 GMT", "serial": "03039C464D454EDE79FCD2CAE859F668F269", "sha256-fingerprint": "1ff3bfd2c7c199489ed04df6e29a9b4ea6c015fe8a1b0ce3deb88afc751e352d" "renewal" : { ...renewed cert information... } }
MDChallengeDns01 指令
描述: | |
句法: | MDChallengeDns01 path-to-command |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
定义要在dns-01
挑战需要下降时调用的程序。该程序的参数为setup
或teardown
,后跟域 name。对于setup
,另外给出了挑战内容。
您无需指定此项,因为 long 可以作为'http:'或'https:'质询方法。但是,Let's Encrypt 使'dns-01'成为通配符证书唯一可用的挑战。如果您需要其中一个,则需要对其进行配置。
有关详细信息,请参阅上面有关通配符证书的部分。
MDDriveMode 指令
描述: | MDRenewMode 的前 name。 |
句法: | MDDriveMode always\|auto\|manual |
默认: | MDDriveMode auto |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
该指令的存在是为了向后兼容,作为MDRenewMode的旧 name。
MDHttpProxy 指令
描述: | 为传出连接定义代理。 |
句法: | MDHttpProxy url |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
使用 http 代理连接到 MDCertificateAuthority。如果您的网络服务器只能通过转发代理到达互联网,请定义此项。
MDMember 指令
描述: | 托管域的其他主机名。 |
句法: | MDMember hostname |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
您可以使用MDMember将这些名称添加到托管域,而不是在同一 line 上列出所有 dns 名称。
例
<MDomain example.org> MDMember www.example.org MDMember mail.example.org </MDomain>
如果在 global context 中使用它,在特定 MD 之外,则只能指定一个 value,'auto'或'manual'作为所有其他 MD 的默认值。有关这些特殊值的说明,请参见MDomain。
MDMembers 指令
描述: | 控制是否自动添加别名域名。 |
句法: | MDMembers auto\|manual |
默认: | MDMembers auto |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
定义 VirtualHost 的服务器名称和ServerAlias值是否自动添加到托管域的成员。
MDMessageCmd 指令
描述: | 处理管理域的 events |
句法: | MDMessageCmd path-to-cmd optional-args |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
当受管域发生以下 events 之一时,将调用此命令:“renewed”,“expiring”,“errored”。该命令可能在将来被调用的次数超过这些,并忽略它不准备处理的 events。
这是MDNotifyCmd的更灵活的伴侣。
例
MDMessageCmd /etc/apache/md-message # will be invoked when a new certificate for mydomain.org is available as:/etc/apache/md-message renewed mydomain.com
程序不应该阻塞,因为模块将等待它完成。除 0 以外的 return code 被视为错误。
“错误”并不是直接引起关注的原因,因为早期尝试更新以允许互联网回来。
'到期'应该认真对待。它是在达到MDWarnWindow时发出的。默认情况下,这是证书有效期的 10%,因此对于 Let's Encrypt,这当前意味着它到期前 9 天。警告每天最多重复一次。
MDMustStaple 指令
描述: | 控制新证书是否带有 OCSP Must Staple flag。 |
句法: | MDMustStaple on\|off |
默认: | MDMustStaple off |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
定义新请求的证书是否应设置 OCSP Must Staple flag。如果证书具有此 flag,则服务器需要向每个 client 发送 OCSP 装订响应。这仅适用于配置mod_ssl以生成此项(请参阅SSLUseStapling和好友)。
MDNotifyCmd 指令
描述: | 当托管域准备就绪时运行程序。 |
句法: | MDNotifyCmd path[ args ] |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
当托管域已注册或续订其证书时,配置的可执行文件为 run。它被赋予处理过的 MD 的 name 作为附加 arguments(在此处指定的参数之后)。它应该 return status code 0 表示它已成功运行 run。
MDomain 指令
描述: | 定义属于一个 group 的域名列表。 |
句法: | MDomain dns-name[ other-dns-name...][auto\|manual] |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
列表中的所有名称都作为一个托管域(MD)进行管理。 mod_md 将请求一个对所有这些名称有效的单一证书。该指令使用 global 设置(参见下面的其他 MD 指令)。如果您需要一个 MD 的特定设置,请使用<MDomainSet>。
托管域还需要 2 个其他设置:ServerAdmin和MDCertificateAgreement。ServerAdmin的邮件地址用于在 CA 注册(默认情况下为 Let's Encrypt)。 CA 可以使用它来通知您服务或证书状态的变化。
第二个设置MDCertificateAgreement应该 value“已接受”。通过指定,您确认您接受 CA 的服务条款。
例
ServerAdmin mailto:admin@example.org MDCertificateAgreement accepted MDomain example.org www.example.org <VirtualHost *:443> ServerName example.org DocumentRoot htdocs/root SSLEngine on </VirtualHost> <VirtualHost *:443> ServerName www.example.org DocumentRoot htdocs/www SSLEngine on </VirtualHost>
您可以在此指令中使用两个特殊名称:'manual'和'auto'。这确定了托管域是否具有完全符合配置的 name 列表(“手动”)或提供更多便利。使用'auto',虚拟 host 的所有名称都会添加到 MD 中。方便的是,'auto'也是默认值。
例
MDomain example.org <VirtualHost *:443> ServerName example.org ServerAlias www.example.org DocumentRoot htdocs/root SSLEngine on </VirtualHost> MDomain example2.org auto <VirtualHost *:443> ServerName example2.org ServerAlias www.example2.org ... </VirtualHost>
在此 example 中,域“www.example.org”会自动添加到 MD“example.org”。类似地,'example2.org'显式配置'auto'。每当您向此虚拟 host 添加更多 ServerAlias 名称时,它们也将添加到托管域。
如果您希望明确声明所有域名,请使用“手动”模式。如果名称与预期名称不匹配,则会记录错误。
<MDomainSet>指令
描述: | 指令的容器应用于相同的托管域。 |
句法: | <MDomainSet dns-name[ other-dns-name...]>...</MDomainSet> |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
这是指令MDomain,增加了为此 MD 添加设置的可能性。实际上,您也可以使用“<MDomain ..>”作为快捷方式。
这允许您配置使用另一个证书 Authority 的 MD,具有其他续订要求等。
例
<MDomain sandbox.example.org> MDCertificateAuthority https://someotherca.com/ACME </MDomain>
common 用例是为您的域单独配置 https:要求。
例
<MDomain example.org> MDRequireHttps temporary </MDomain>
MDPortMap 指令
描述: | Map 内部端口外部用于域所有权验证。 |
句法: | MDPortMap map1[ map2 ] |
默认: | MDPortMap http:80 https:443 |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
ACME 协议提供了两种通过 HTTP 验证域所有权的方法:一种使用'http:'urls(port 80),另一种使用'https:'urls(port 443)。如果至少有两个服务器无法访问您的服务器,则 ACME 可能只能通过配置 DNS 服务器来工作,请参阅MDChallengeDns01。
在大多数面向公众的服务器上,“http:”到达 port 80 和 port 443 上的“https:”。模块会检查 Apache 服务器正在侦听的端口并假设这些端口可用。这意味着当您的服务器不监听 port 80 时,它会假定来自互联网的“http:”请求不起作用。
这是一个很好的猜测,但它可能是错误的。例如,Apache 可能会监听 port 80,但您的防火墙可能会阻止它。'http:'仅在您的 Intranet 中可用。因此,该模块将错误地假设 Let's Encrypt 可以对您的服务器使用'http:'挑战。这将失败,因为您的防火墙将丢弃这些。
例
MDPortMap http:- https:8433
上面的示例显示了如何指定来自互联网的“http:”请求永远不会到达。此外,它说“https:”请求将到达本地 port 8433。
如果你有 port 转发,你的服务器可以在 port 443 上从 Internet 访问,但 httpd 使用的本地 port 是另一个。您的服务器可能只侦听端口 8443 和 8000,但是可以通过端口 443 和 80(来自 Internet)访问。
MDPrivateKeys 指令
描述: | 设置生成的私钥的类型和大小。 |
句法: | MDPrivateKeys type[ params...] |
默认: | MDPrivateKeys RSA 2048 |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
定义为托管域生成哪种私钥以及使用哪些参数。现在唯一支持的类型是'RSA',它所采用的唯一参数是 key 使用的位数。
当前(2017)建议至少为 2048 位,此处不接受较小的数字。较高的 numbers 提供更长的安全性,但计算上更昂贵,e.g.增加服务器的负载。这对您来说可能是也可能不是问题。
其他 key 类型将在未来定义。
例
MDPrivateKeys RSA 3072
请注意,此设置仅对新密钥有影响。您拥有的任何现有私有 key 仍然不受影响。此外,这仅影响为证书生成的私钥。 ACME 帐户密钥不受此影响。
MDRenewMode 指令
描述: | 控制是否续签证书。 |
句法: | MDRenewMode always\|auto\|manual |
默认: | MDRenewMode auto |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
在默认的“自动”模式下,模块将执行对每个受管域最有意义的操作。对于没有任何证书的域,它将从证书 Authority 获取它们。
但是,如果您定义了一个未被 Apache 的 VirtualHosts 使用的 MD,它将不会打扰。对于具有静态证书 files 的 MD(请参阅MDCertificateFile),它假定您拥有自己的源,并且也不会续订它们。
您可以以任一方式覆盖此默认值。如果指定“always”,则模块将为 MD 更新证书,无论域名是否正在使用或是否存在静态 files。
相反,请配置“手动”,不会尝试续订。
MDRenewWindow 指令
描述: | 控制何时续订证书。 |
句法: | MDRenewWindow duration |
默认: | MDRenewWindow 33% |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
如果证书的有效期低于持续时间,mod_md 将获得新的签名证书。
通常,证书有效期约为 90 天,mod_md 将在其到期前最早的 33%续订(因此有效期为 90 天,到期前 30 天)。如果您认为这不是您所需要的,您可以指定确切的 time,如下所示:
例
# 21 days before expiry MDRenewWindow 21d # 30 seconds (might be close) MDRenewWindow 30s # 10% of the cert lifetime MDRenewWindow 10%
在自动驾驶模式下,模块将至少每 12 小时检查一次托管域的状态以及是否需要执行某些操作。在出现错误时,例如,当 CA 无法访问时,它将在几秒钟后重新启动。如果继续失败,它将退回到每小时检查的最大间隔。
MDRequireHttps 指令
描述: | 将 http:traffic 重定向到 https:for Managed Domains。 |
句法: | MDRequireHttps off\|temporary\|permanent |
默认: | MDRequireHttps off |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
这是一个方便的指令,可以简化 http:到 https:迁移您的 Managed Domains。附:
例
MDRequireHttps temporary
您现在宣布希望通过 http:URL 的所有流量重定向到 https:。这是安全的,您可以在任何 time 时再次删除它。
以下结果:如果您希望 client不再使用 http:URL,请配置:
永久(至少半年!)
MDRequireHttps permanent
这有两件事:
- 使用
301
status code 将对http:
资源的所有请求重定向到具有https:
scheme 的相同 URL。这告诉 clients 这应该是永远的,并且应该相应地更新他们拥有的任何链接。 - 对
https:
请求的所有答案都将带有标题Strict-Transport-Security
,其生命 time 为半年。这告诉浏览器,在与这个域 name 交谈时,****(半年)**将使用http:
。浏览器会在看到此消息后拒绝联系您未加密的网站。这可以防止恶意中间件降级连接和 listen/manipulate 流量。这很好。但你不能简单地再把它拿回来。
基本上,您可以使用mod_alias和某些重定向 configuration 实现相同的功能。如果您自己执行此操作,请确保从重定向中排除 paths /.well-known/*,否则 mod_md 可能无法在新证书上签名。
如果您全局设置,则它适用于所有托管域。如果您只想将其用于特定域,请使用:
例
<MDomain xxx.yyy> MDRequireHttps temporary </MDomain>
MDServerStatus 指令
描述: | 控制是否将管理域信息添加到 server-status。 |
句法: | MDServerStatus on\|off |
默认: | MDServerStatus on |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
Apaches'server-status'处理程序允许您配置资源以监视正在发生的事情。这包括现在列出所有托管域的部分,其中包含 DNS 名称,续订状态,生命周期和主要 properties。
您可以使用此指令将其关闭。
MDStoreDir 指令
描述: | 本地文件系统上的路径,用于存储 Managed Domains 数据。 |
句法: | MDStoreDir path |
默认: | MDStoreDir md |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
定义本地文件系统上托管域数据的存储位置。这是绝对路径或相对于服务器根目录解释。默认情况下将在服务器根目录中创建一个目录“md”。
如果移动它并且已经有数据,请确保首先将数据 move/copy 添加到新位置,然后重新配置然后重新启动服务器。如果您首先重新配置并重新启动,服务器将尝试获取它认为缺少的新证书。
MDWarnWindow 指令
描述: | 如果要警告即将到期的证书,请定义 time 窗口。 |
句法: | MDWarnWindow duration |
默认: | MDWarnWindow 10% |
Context: | 服务器配置 |
状态: | 延期 |
模块: | mod_md |
有关如何指定 time 的说明,请参见MDRenewWindow。
模块检查证书的剩余生命周期,并在小于警告窗口时调用MDMessageCmd。默认情况下,这意味着来自 Let's Encrypt 的证书有 9 天。
它也适用于具有静态证书 files 的托管域(请参阅MDCertificateFile)。