<-
Apache HTTP 服务器 2.4 > Apache模块mod_md

Apache模块mod_md

描述:跨虚拟主机管理域,通过ACME协议配置证书
状态:实验性
模块标识符:md_module
源文件:mod_md.c
兼容性:在版本2.4.30和更高版本中可用

摘要

此模块管理一个或多个虚拟主机的域的通用属性。它有两个主要目的:一是通过ACME协议(RFC 8555)监督/更新https:证书。证书将在过期之前由模块进行更新,以解决互联网服务中断的问题。有一些方法可以监视以这种方式管理的所有证书的状态,以及可以在续订,到期和错误时运行您自己的通知命令的配置。

其次,mod_md提供了备用的OCSP装订实现。这适用于托管证书以及您自己配置的证书。OCSP装订对于任何https:站点都是必不可少的组件,它会影响页面加载时间,并根据其他设置影响页面可用性。在下面的装订部分中有更多内容。

默认的ACME管理证书的机构是 Let's Encrypt,但是可以配置另一个支持该协议的CA。

简单的配置示例:

VirtualHost上下文中的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服务不可用”来回答对受管域的请求。

先决条件

此模块也需要mod_watchdog加载。

使用Let's Encrypt进行证书注册和续订要求您的服务器可从公共Internet的端口80(http :)和/或端口443(https :)上访问。(除非您的服务器配置为使用DNS进行挑战-“通配符证书”下的内容更多)

该模块将从“加密”提供的方法中进行选择。通常,LE在端口和DNS上都会带来挑战,而Apache选择一种可用的方法。

为了确定哪一个可用,模块将查看Apache httpd监听的端口。如果这些端口包括端口80,则假定http:质询(名为http-01)可用。如果服务器侦听端口443,则还将https:质询(名为tls-alpn-01)添加到列表中。(如果MDChallengeDns01 已配置,还将添加质询dns-01。)

如果您的设置不是那么简单,则有两种方法可以影响此设置。首先,查看MDPortMap 服务器是否位于端口映射器(如防火墙)之后。其次,您可以通过MDCAChallenges直接配置完全覆盖模块的猜测 。

https:挑战

对于通过TLS协议进行的域验证,“ tls-alpn-01”是质询类型的名称。它要求Apache服务器在端口443上侦听(请参阅MDPortMap是否将该端口映射到其他端口)。

让我们加密将使用特殊指示器“ acme-tls / 1”打开到Apache的TLS连接(此指示部分的TLS称为ALPN,因此称为挑战名称。浏览器还使用ALPN来请求HTTP / 2连接)。

与HTTP / 2协议一样,要允许此操作,请配置:

Protocols h2 http/1.1 acme-tls/1

并且tls-alpn-01挑战类型可用。

通配符证书

通配符证书是可能的,但不能直接使用。让我们加密需要对它们进行“ dns-01”质询验证。没有其他东西被认为足够好。

这里的困难是Apache无法独自做到这一点。顾名思义,“ dns-01”要求您显示您的域的某些特定DNS记录,其中包含一些质询数据。因此,您需要_write_您域的DNS记录。

如果您知道该怎么做,可以将其与mod_md集成。假设您在/ usr / bin / acme-setup-dns中有一个脚本,可以使用以下命令配置Apache:

MDChallengeDns01 /usr/bin/acme-setup-dns

并且Apache需要设置/删除域的DNS质询记录时将调用此脚本。

假设您想要`* .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>

在您的服务器上。与“服务器状态”一样,您将需要为此添加权限。

如果您只想检查特定域的JSON状态,只需将其附加到状态URL:

> curl https://<yourhost>/md-status/another-domain.org
{
  "name": "another-domain.org",
  "domains": [
    "another-domain.org",
    "www.another-domain.org"
  ],
  ...

续订域名时,此JSON状态还显示活动日志:

{
"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”中找到该信息,并在激活目录后找到它。这使您也可以在以后的任何时间检查它们。

此外,还MDCertificateStatus提供了以JSON格式访问相关证书信息的功能。

装订

如果要首先尝试单独在一个受管域中进行装订,请配置:

<MDomain mydomain.net>
  MDStapling on
</MDomain>

并使用“服务器状态”和/或MDMessageCmd查看其运行方式。您将看到装订信息是否存在,有效时间,从何处来以及何时刷新。

如果这一切都令您满意,则可以为所有证书或仅受管证书打开它。

mod_ssl的现有装订实现已被许多站点使用多年。mod_ssl和mod_md之间有两个主要区别:

  1. 按需与计划:mod_ssl在请求时(例如在新连接上)检索装订信息。mod_md会在服务器启动时以及其生命周期的2 / 3s之后立即检索它。
  2. 在内存中还是持久化:mod_ssl 可以持久化此信息,但是大多数示例配置都使用内存缓存。mod_md始终存储在文件系统中。

如果您很不幸,并且在CA的OCSP服务中断期间重新启动服务器,则您的用户可能不再访问您的站点。没有持久性,您的服务器将无法向客户端提供数据,而客户端浏览器也无法获取数据,因为OCSP服务没有响应。

mod_md中的实现将一直存在,在重新启动后再次加载并使其可用于传入连接。此信息过期前一两天,它将对其进行更新,使其能够在较长的OCSP服务停机时间内进行复制。

由于向后兼容性,无法大幅度更改mod_ssl中的现有实现。例如,如果不停止许多现有安装(不会加载它),mod_ssl无法将依赖项添加到mod_watchdog。

支持Apache!

指令

错误修正清单

也可以看看

最佳

MDActivationDelay 指令

描述:
句法:MDActivationDelay duration
内容:服务器配置
状态:实验性
模块:mod_md
兼容性:在2.4.42版和更高版本中可用

最佳

MDBaseServer 指令

描述:控制是否可以管理基本服务器或仅托管虚拟主机。
句法:MDBaseServer on|off
默认:MDBaseServer off
内容:服务器配置
状态:实验性
模块:mod_md

控制基本服务器(所有VirtualHost外部的服务器)是否应由mod_md管理。默认情况下不会。由于它可能具有令人困惑的副作用的原因。建议您为所有托管域拥有虚拟主机,并且不要依赖于全局的回退服务器配置。

最佳

MDCAC挑战 指令

描述:用于证明域所有权的ACME挑战的类型。
句法:MDCAChallenges name [ name ... ]
默认:MDCAChallenges tls-alpn-01 http-01 dns-01
内容:服务器配置
状态:实验性
模块:mod_md

在证明域所有权时设置挑战类型(按优先顺序)。该模块支持挑战方法“ tls-alpn-01”,“ dns-01”和“ http-01”。该模块将查看服务器的整体配置,以找出可以使用的方法。

例如,如果服务器在端口80上侦听,则'http-01'方法可用。“ dns-01”的前提条件是已配置的 MDChallengeDns01命令。上面的“ https:挑战”中介绍了“ tls-alpn-01”。

此自动选择适用于大多数设置。但是,由于Apache是​​具有许多配置选项的功能非常强大的服务器,因此并非在所有可能的情况下情况都如此。例如:它可以侦听多个IP地址,其中某些IP地址可以在“ https:”上访问,而有些IP地址则无法访问。

如果MDCAChallenges直接配置,此自动选择将被禁用。相反,模块在与ACME服务器通话时将使用配置的质询列表(质询类型也必须由服务器提供)。将按照指定的顺序检查这些挑战。

最佳

MDCertificateAgreement 指令

描述:您确认已接受证书颁发机构的服务条款。
句法:MDCertificateAgreement accepted
内容:服务器配置
状态:实验性
模块:mod_md

当您使用mod_md获得证书时,您将成为CA的客户(例如,让我们加密)。这意味着您需要阅读并同意他们的服务条款,以便了解他们提供的服务以及他们可能从您的服务中排除或要求的内容。mod_md本身不能同意这样的事情。

最佳

MDCertificateAuthority 指令

描述:ACME证书颁发机构服务的URL。
句法:MDCertificateAuthority url
默认:MDCertificateAuthority https://acme-v02.api.letsencrypt.org/directory
内容:服务器配置
状态:实验性
模块:mod_md

CA提供服务的URL。

现在让我们加密提供四个此类URL。两个用于ACME协议自己的旧版,通常称为ACMEv1。还有两个用于RFC 8555版本的名称为ACMEv2。

每个版本都有2个端点,因为它们是生产端点和用于测试的“临时”端点。测试端点的工作原理相同,但不会提供浏览器可以识别的证书。但是,它也有非常宽松的速率限制。这样就可以重复测试服务,而不会阻塞自己。

LE分级设置

MDCertificateAuthority https://acme-staging-v02.api.letsencrypt.org/directory
最佳

MDCertificateCheck 指令

描述:
句法:MDCertificateCheck name url
内容:服务器配置
状态:实验性
模块:mod_md
兼容性:在2.4.42版和更高版本中可用

最佳

MDCertificateFile 指令

描述:为MD指定静态证书文件。
句法:MDCertificateFile path-to-pem-file
内容:服务器配置
状态:实验性
模块:mod_md

在a中使用,MDomainSet并指定保存受管域证书链的文件。匹配密钥是通过指定的MDCertificateKeyFile

<MDomain mydomain.com>
  MDCertificateFile /etc/ssl/my.cert
  MDCertificateKeyFile /etc/ssl/my.key
</MDomain>

这等效于mod_ssl SSLCertificateFile指令。它有多种用途。

如果要使用静态文件将现有域迁移到一个自动的“我们加密”证书中。您定义 MDomainSet,在此处添加文件,然后SSLCertificateFile从VirtualHosts中删除。

这将为您提供与以前相同的功能,并且配置中的重复行可能更少。然后,您可以向其添加MDRenewMode “ always”(始终),模块将在文件中的证书过期之前获得新证书。完成此操作后,请删除 MDCertificateFile并重新加载服务器。

另一个用例是您与其他ACME客户端(例如优秀的certbot)续订“加密加密”证书 。然后,让您的MD指向certbot中的文件,并使它们一起工作。

最佳

MDCertificateKeyFile 指令

描述:为静态证书指定静态私钥。
句法:MDCertificateKeyFile path-to-file
内容:服务器配置
状态:实验性
模块:mod_md

在a中使用,MDomainSet并指定保存托管域私钥的文件。匹配的证书是通过指定的MDCertificateFile

这等效于mod_ssl SSLCertificateKeyFile指令。

最佳

MDCertificateMonitor 指令

描述:证书日志监视器的URL。
句法:MDCertificateMonitor name url
默认:MDCertificateMonitor crt.sh https://crt.sh?q=
内容:服务器配置
状态:实验性
模块:mod_md

这是“服务器状态” HTML用户界面的一部分,与核心功能本身无关。它定义了该页面上提供的链接,用于轻松检查证书监视器。证书的SHA256指纹将附加到配置的URL。

证书监视器提供对证书透明度(CT)日志的监视,以跟踪域证书的使用。您可能至少会看到,Let's Encrypt(或您配置的任何CA)已将证书输入CTLogs。

注意:证书日志更新和监视器对这些更新的接收会受到一些延迟。这在日志和监视器之间有所不同。全新证书不会立即被知晓。

最佳

MDCertificateProtocol 指令

描述:与证书颁发机构一起使用的协议。
句法:MDCertificateProtocol protocol
默认:MDCertificateProtocol ACME
内容:服务器配置
状态:实验性
模块:mod_md

指定要使用的协议。目前仅ACME支持。

最佳

MDCertificateStatus 指令

描述:以JSON公开公共证书信息。
句法:MDCertificateStatus on|off
默认:MDCertificateStatus on
内容:服务器配置
状态:实验性
模块:mod_md

启用后,“ https://domain/.httpd/certificate-status”中的“受管域”中的资源可用,该资源将返回当前证书和续订证书的JSON文档列表键属性(如果有)。

{
  "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
内容:服务器配置
状态:实验性
模块:mod_md

定义需要设置/销毁“ dns-01”质询时要调用的程序。该程序被赋予参数“ setup”或“ teardown”,后跟域名。对于“设置”,还提供了挑战内容。

只要可以使用'http:'或'https:'质询方法,就无需指定此选项。但是,“让我们加密”使“ dns-01”成为通配符证书可用的唯一挑战。如果需要其中之一,则需要进行配置。

有关更多详细信息,请参见上面有关通配符证书的部分。

最佳

MDContactEmail 指令

描述:
句法:MDContactEmail address
内容:服务器配置
状态:实验性
模块:mod_md

ACME协议要求您在注册时提供联系人网址。目前,Let's Encrypt需要一个电子邮件地址(它将使用它来通知您有关续订或更改的服务条款)。在您的Apache配置中mod_md使用MDContactEmail指令电子邮件,因此请在此处指定正确的地址。如果MDContactEmail不存在,mod_md将使用 ServerAdmin指令。

最佳

MDDriveMode 指令

描述:MDRenewMode的旧名称。
句法:MDDriveMode always|auto|manual
默认:MDDriveMode auto
内容:服务器配置
状态:实验性
模块:mod_md

存在此指令是为了向后兼容,它是的旧名称 MDRenewMode

最佳

MDHttpProxy 指令

描述:为传出连接定义代理。
句法:MDHttpProxy url
内容:服务器配置
状态:实验性
模块:mod_md

使用http代理连接到MDCertificateAuthority。如果您的网络服务器只能通过转发代理访问Internet,请定义此选项。

最佳

MDMember 指令

描述:受管域的其他主机名。
句法:MDMember hostname
内容:服务器配置
状态:实验性
模块:mod_md

您可以使用MDMember将这样的名称添加到托管域中来代替在同一行上列出所有DNS名称 。

<MDomain example.org>
    MDMember www.example.org
    MDMember mail.example.org
</MDomain>

如果在特定MD之外的全局上下文中使用它,则只能将一个值“ auto”或“ manual”指定为所有其他MD的默认值。有关MDomain这些特殊值的说明,请参见 。

最佳

MDMembers 指令

描述:控制是否自动添加别名域名。
句法:MDMembers auto|manual
默认:MDMembers auto
内容:服务器配置
状态:实验性
模块:mod_md

定义是否将VirtualHost 的ServerNameServerAlias值自动添加到托管域的成员。

最佳

MDMessageCmd 指令

描述:处理管理域的事件
句法:MDMessageCmd path-to-cmd optional-args
内容:服务器配置
状态:实验性
模块:mod_md

当受管域发生以下事件之一时,将调用此命令:“更新”,“安装”,“到期”,“错误”。将来可能会调用更多命令,并忽略不准备处理的事件。

这是的更灵活的伴侣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的返回码被视为错误。

“错误”并不是引起关注的直接原因,因为更新已尽早尝试以使互联网恢复正常。每小时最多报告一次。

“到期”应当真。MDWarnWindow到达时发出 。默认情况下,这是证书寿命的10%,因此,对于“让我们加密”来说,当前意味着证书到期前9天。该警告每天最多重复一次。

“更新”表示已获取新证书,并将其存储在MD存储区的“登台”区域中。它将在下次服务器重新启动/重新加载时被激活。

当新证书已从登台转移到MD存储区中的域位置时,将触发“已安装”。这在服务器启动/重新加载时发生。与所有其他调用不同,MDMessageCmd它具有root权限(在* nix系统上)运行,并且可以访问证书文件(和密钥)。可以在此事件中处理其他应用程序或其他格式所需的证书。

最佳

MDMustStaple 指令

描述:控制新证书是否带有OCSP必须装订标志。
句法:MDMustStaple on|off
默认:MDMustStaple off
内容:服务器配置
状态:实验性
模块:mod_md

定义新请求的证书是否应设置“ OCSP必须装订”标志。如果证书具有此标志,则要求服务器向每个客户端发送OCSP装订响应。仅当您配置mod_ssl为生成此代码时,此方法才有效 (请参阅SSLUseStapling 和朋友)。

最佳

MDNotifyCmd 指令

描述:托管域就绪后,运行程序。
句法:MDNotifyCmd path [ args ]
内容:服务器配置
状态:实验性
模块:mod_md

当受管域注册或更新其证书时,将运行配置的可执行文件。给它作为附加参数的已处理MD的名称(在此处指定的参数之后)。它应该返回状态码0表示它已经成功运行。

最佳

MDomain 指令

描述:定义属于一组的域名列表。
句法:MDomain dns-name [ other-dns-name... ] [auto|manual]
内容:服务器配置
状态:实验性
模块:mod_md

列表中的所有名称都作为一个受管域(MD)进行管理。mod_md将请求一个对所有这些名称均有效的证书。该指令使用全局设置(请参阅下面的其他MD指令)。如果您需要一个MD的特定设置,请使用<MDomainSet>

受管域还需要进行2个其他设置:联系人电子邮件地址(通过MDContactEmailServerAdmin)和MDCertificateAgreement。的邮件地址ServerAdmin 用于在CA进行注册(默认情况下为“让我们加密”)。CA可能会使用它来通知您有关其服务或证书状态的更改。

第二个设置MDCertificateAgreement的值应为“ accepted”。通过指定此项,您确认您接受CA的服务条款。

MDContactEmail 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”。这决定了受管域是否应具有已配置(“手动”)的名称列表,还是提供更多便利。通过“自动”,虚拟主机的所有名称都将添加到MD。方便地,“自动”也是默认设置。

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>

在此示例中,域“ www.example.org”会自动添加到MD“ example.org”中。与“ example2.org”类似,其中显式配置了“ auto”。每当您向该虚拟主机添加更多ServerAlias名称时,它们也将被添加到托管域中。

如果您希望显式声明所有域名,请使用“手动”模式。如果名称与预期名称不匹配,将记录错误。

最佳

<MDomainSet> 指令

描述:适用于相同托管域的指令的容器。
句法:<MDomainSet dns-name [ other-dns-name... ]>...</MDomainSet>
内容:服务器配置
状态:实验性
模块:mod_md

该指令MDomain 具有为该MD添加设置的更多可能性。实际上,您也可以使用“ <MDomain ..>”作为快捷方式。

这使您可以配置使用其他证书颁发机构,具有其他续订要求等的MD。

<MDomain sandbox.example.org>
    MDCertificateAuthority   https://someotherca.com/ACME
</MDomain>

一个常见的用例是为您的域分别配置https:要求。

<MDomain example.org>
    MDRequireHttps temporary
</MDomain>
最佳

MDPortMap 指令

描述:将外部映射到内部端口以进行域所有权验证。
句法:MDPortMap map1 [ map2 ]
默认:MDPortMap http:80 https:443
内容:服务器配置
状态:实验性
模块:mod_md

ACME协议提供了两种通过HTTP验证域所有权的方法:一种使用“ http:” URL(端口80),一种使用“ https:” URL(端口443)。如果您的服务器无法通过两者之一访问,则ACME只能通过配置DNS服务器来工作,请参阅MDChallengeDns01

在大多数面向公众的服务器上,“ http:”到达端口80,“ https:”到达端口443。该模块检查Apache服务器正在侦听的端口,并假定这些端口可用。这意味着,当您的服务器未在端口80上侦听时,它将假定来自Internet的“ http:”请求将不起作用。

这是一个很好的猜测,但可能是错误的。例如,您的Apache可能监听80端口,但是您的防火墙可能阻止了它。“ http:”仅在您的Intranet中可用。因此,该模块将错误地认为Let's Encrypt可以在服务器上使用“ http:”挑战。然后这将失败,因为您的防火墙将丢弃那些防火墙。

MDPortMap http:- https:8433

上面的示例显示了如何指定来自Internet的“ http:”请求永远不会到达。此外,它还说“ https:”请求将到达本地端口8433。

如果有适当的端口转发,这是必要的,则可以从Internet上的端口443访问服务器,但是httpd使用的本地端口是另一个。您的服务器可能仅侦听端口8443和8000,但可以侦听端口443和80(来自Internet)。

最佳

MDPrivateKeys 指令

描述:设置生成的私钥的类型和大小。
句法:MDPrivateKeys type [ params... ]
默认:MDPrivateKeys RSA 2048
内容:服务器配置
状态:实验性
模块:mod_md

定义为托管域生成哪种私钥以及使用什么参数。现在唯一受支持的类型是“ RSA”,并且它采用的唯一参数是密钥所使用的位数。

当前(2017年)建议至少为2048位,此处不接受较小的建议。较高的数字可提供更长的安全性,但计算上更昂贵,例如,增加服务器的负载。这可能对您来说不是问题。

其他密钥类型将在以后定义。

MDPrivateKeys RSA 3072

请注意,此设置仅对新键有效。您拥有的任何现有私钥均不会受到影响。同样,这仅影响为证书生成的私钥。ACME帐户密钥不受此影响。

最佳

MDRenewMode 指令

描述:控制是否更新证书。
句法:MDRenewMode always|auto|manual
默认:MDRenewMode auto
内容:服务器配置
状态:实验性
模块:mod_md

在默认的“自动”模式下,该模块将执行每个受管域最有意义的操作。对于没有证书的域,它将从证书颁发机构获得证书。

但是,如果您定义的MD未被Apache的任何VirtualHost使用,则它不会打扰。对于带有静态证书文件的MD(请参阅参考资料MDCertificateFile),它假定您拥有自己的源,也不会更新它们。

您可以通过两种方式覆盖此默认设置。如果指定“ always”(始终),则该模块将续签MD的证书,而不管域是否正在使用或是否有静态文件。

为了达到相反的效果,请配置“手动”,并且不会尝试进行任何更新。

最佳

MDRenewWindow 指令

描述:控制何时更新证书。
句法:MDRenewWindow duration
默认:MDRenewWindow 33%
内容:服务器配置
状态:实验性
模块:mod_md

如果证书的有效性低于持续时间,则mod_md将获得新的签名证书。

通常,证书的有效期大约为90天,mod_md会在证书过期之前最早将其续约33%进行续签(因此,对于90天的有效期,即证书过期30天)。如果您认为这不是您所需要的,则可以指定确切的时间,例如:

# 21 days before expiry
MDRenewWindow 21d 
# 30 seconds (might be close)
MDRenewWindow 30s
# 10% of the cert lifetime
MDRenewWindow 10%

在自动驱动模式下,该模块至少每12小时检查一次托管域的状态以及是否需要执行某些操作。对于错误(例如,当CA无法访问时),它将在几秒钟后最初重试。如果该操作继续失败,它将退回至每小时检查的最大间隔。

最佳

MDRequireHttps 指令

描述:将托管域的http:流量重定向到https:。
句法:MDRequireHttps off|temporary|permanent
默认:MDRequireHttps off
内容:服务器配置
状态:实验性
模块:mod_md

这是一个方便的指令,可简化从托管域的http:到https:的迁移。带有:

MDRequireHttps temporary

您宣布暂时希望将所有通过http:URL的流量重定向到https:。这是安全的,您可以随时再次将其删除。

结果如下:如果希望客户端不再使用http:URL,请配置:

永久(至少半年!)

MDRequireHttps permanent

这有两件事:

  1. 使用 状态代码,使用该方案将对http:资源的所有请求重定向到相同的url 。这告诉客户这将永远存在,并且应该相应地更新他们拥有的所有链接。 https:301
  2. https:请求的所有答案都将带有 Strict-Transport-Security半年的寿命。这告诉浏览器, 与该域名通话时(半年)永远不要使用http:。浏览器在看到此信息后将拒绝与您未加密的站点联系。这样可以防止恶意中间件降级连接并侦听/操纵流量。哪个好 但是您不能简单地再次将其收回。

基本上,您可以通过mod_alias和一些 Redirect配置来实现相同的目的。如果您自己执行此操作,请确保从重定向中排除路径/.well-known/*,否则mod_md可能无法在新证书上签名。

如果全局设置,则它适用于所有托管域。如果只希望将其用于特定域,请使用:

<MDomain xxx.yyy>
  MDRequireHttps temporary
</MDomain>
最佳

MDServerStatus 指令

描述:控制是否将受管域信息添加到服务器状态。
句法:MDServerStatus on|off
默认:MDServerStatus on
内容:服务器配置
状态:实验性
模块:mod_md

Apache的“服务器状态”处理程序允许您配置资源以监视正在发生的事情。现在,该部分列出了所有托管域,其中包括DNS名称,续订状态,生存期和主要属性。

您可以使用此指令将其关闭。

最佳

MDStapleOthers 指令

描述:为非mod_md管理的证书启用装订。
句法:MDStapleOthers on|off
默认:MDStapleOthers on
内容:服务器配置
状态:实验性
模块:mod_md
兼容性:在2.4.42版和更高版本中可用

此设置仅在MDStapling启用后生效。它控制是否mod_md还应为不受其直接控制的证书提供装订信息,例如通过ACME CA更新。

最佳

Copyright 2020 The Apache Software Foundation.
基于
Apache License, Version 2.0 许可证.