如何使用DigitalOcean DNS创建和管理CAA记录

介绍

证书颁发机构授权(CAA)是旨在防止坏角色创建未经授权的SSL / TLS证书的标准。 CAA记录允许域所有者指定哪些证书颁发机构(CA)被允许颁发证书。

先决条件

要遵循本教程,您将需要:

  • 注册域名,设置为使用DigitalOcean DNS。 如果您不使用DigitalOcean DNS, 如何使用DigitalOcean 设置主机名可以指导您。

当您在DigitalOcean上设置您的域名时,您可以开始。

背景

证书颁发机构授权使用域名系统(DNS)资源记录。 如果您刚接触DNS, DNS术语,组件和概念简介可以帮助您熟悉。

像其他类型的DNS记录一样,CAA记录可以应用于整个域,如example.com或特定的子域,如beta.example.com 同样地,记录的寿命可以通过给定的生存时间(TTL)值(秒)来设置。

除了这些常见的DNS字段之外,CAA记录使用三个特定于它们的字段:标签,值和标志。

标签
标签是ASCII字符串。 三个标签由CAA标准定义:

  • issue授权单个CA发布特定主机名的任何类型的证书。 为了允许多个CA,每个CA都需要自己的记录。
  • issuewild授权单个CA颁发通配符证书,并仅发布主机名的通配符证书。 再次,为了允许多个CA,每个CA都需要自己的记录。
  • iodef定义了证书颁发机构可以报告策略违规的URL。 每个联系人URL都需要自己的记录。

除此之外,CAA标准允许CA定义自己的标签。 每个CAA记录仅限于单个标签。


值是与标签关联的字符串。

对于issueissuewild标签,您通常将该值设置为由该记录授予的CA的域名,例如letsencrypt.org

对于iodef您将提供应该报告违规策略的网址。 这可能是专门为此目的设置的服务的URL,但更常见的是,它将是一个mailto URI,如mailto:sammy@digitalocean.com

注意: CAA标准支持:

  1. 通过在值中发送分号( ; )来阻止任何人发出证书
  2. 在CA名称之后允许名称值标签,例如: letsencrypt.org; abc=cde letsencrypt.org; abc=cde

在撰写本文时,DigitalOcean DNS不支持这些操作。 我们正在努力,我们将尽快支持他们。


标志是0-255之间的无符号整数。 目前,此字段用于设置颁发者关键标志,该标志指定CA遇到不明白的标签时的行为方式。

默认标志为0.当CA请求DNS记录颁发证书时,如果有一个标签不明白,标志设置为0,则会忽略该特定记录,并将继续处理任何其他记录。

但是,如果响应中的任何记录的标志设置为1,并且CA不了解该记录中的标记,则符合标准的CA必须拒绝颁发证书。

您可以在RFC 6844中了解有关DNS认证机构授权(CAA)资源记录的更多信息

第1步 - 导航到CAA记录创建页面

在DigitalOcean控制面板的网络选项卡上找到该域,然后单击它:

屏幕截图显示控制面板中的域

从域内的创建新记录标题下选择CAA:

突出显示CAA选项卡的屏幕截图

CAA选项卡包含添加CAA记录所需的字段。 在下一步中,我们将创建一个记录,让我们加密为我们的域颁发证书。

第2步 - 创建问题记录

我们将创建一个记录,让我们加密在digitalocean.love发行任何主机名的证书

插入问题值的截图

  1. 主机名
    要将此记录应用于整个域,我们将输入@

  2. 授予的授权
    在这里,我们输入证书颁发机构的域名。 在我们的例子中,这将是letsencrypt.org

  3. 标签
    由于我们希望允许我们加密,以生成任何类型的证书,我们将从下拉列表中选择issue标签。

  4. FLAGS
    我们接受默认值0

  5. TTL(SECONDS)
    我们接受默认值3600

当我们单击创建记录时 ,新的CAA记录将显示在域记录集的顶部。

完成的问题记录的截图

问题标签是加法的。 如果我们想允许另一个CA授予证书,我们需要添加一个附加记录。

第3步 - 创建发行记录

通配符是一个完整的子域名, *.digitalocean.love 在没有issuewild记录的情况下,任何CA都可以发出通配符。 在这个例子中,我们将添加一个记录以允许不同的证书颁发机构Comodo发出通配符证书(只有通配符证书)。

使用issuewild值填充的截图

  1. 主机名
    我们将通过输入@将其应用于digitalocean.love

  2. 授予的授权
    接下来我们将输入Comodo的域名comodoca.org

  3. 标签
    我们将从下拉列表中选择issuewild标签。

  4. FLAGS
    我们接受默认值0

  5. TTL(SECONDS)
    我们接受默认值3600

已完成的问题和issuewild记录的截图

现在我们添加了Comodo,除非我们添加明确允许它们的记录,否则没有其他CA可以发出通配符证书。

第4步 - 创建iodef记录

最后,我们将添加一个iodef记录,以便CA可以在违反政策的情况下与我们联系。

使用iodef值填充的截图

  1. 主机名
    再次,我们将输入@来表示此联系人信息是针对整个digitalocean.love域。

  2. 授予的授权
    接下来,我们将以mailto:caapolicy@digitalocean.love格式输入联系人电子邮件

  3. 标签
    我们将从下拉列表中选择iodef

  4. FLAGS
    我们接受默认值0

  5. TTL(SECONDS)
    我们接受默认值3600

已完成的问题,issuewild和iodef记录的截图

如果发生策略冲突,此记录可以让证书颁发机构知道谁联系。

第5步 - 管理现有记录

要更新或删除现有记录,请使用更多菜单:

展开的“Screenhot”更多菜单,其中包含编辑记录和删除选项

这些更改将立即反映在控制面板中,但更改传播到DNS服务器的时间将由TTL值确定。

第6步 - 查询您的DNS记录

在最后一步中,我们将查看我们的DNS记录,以验证我们所做的更改对互联网是否可见。 请注意,较早版本的通用DNS工具,如dig ,默认情况下不会返回CAA记录。 如果要使用命令行工具查询记录,则需要更新您正在使用的工具。

我们将使用Google的基于Web的公共DNS服务 ,通过填写digitalocean.love域并在RR类型字段中键入“CAA”,然后单击Resolve:

Google公共DNS的屏幕截图,其值已填写

该查询应该返回答案中的所有三个CAA记录:

我们在输出中的三个CAA记录的截图

此输出验证CAA记录,类型257可见。

结论

在本教程中,我们提供了证书颁发机构授权记录的一些背景知识,并展示了如何添加三个标准资源记录类型, issueissuewildiodef

要了解DNS的更多信息,请访问DNS管理简介 您还可以从RFC 6844:DNS证书颁发机构授权(CAA)资源记录专门了解CAA记录的更多信息。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏