DNS CAA 記錄及創(chuàng)建方法
時(shí)間:2023-02-19 19:42:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-19 19:42:01 來(lái)源:建站知識(shí)
DNS CAA 記錄及創(chuàng)建方法:
請(qǐng)?jiān)L問(wèn)原文鏈接:
https://sysin.cn/blog/dns-caa/,查看最新版。原創(chuàng)作品,轉(zhuǎn)載請(qǐng)保留出處。
作者主頁(yè):www.sysin.cn
關(guān)于 CAA
有一百多個(gè)被稱(chēng)為證書(shū)頒發(fā)機(jī)構(gòu)的組織,可以頒發(fā) SSL 證書(shū)來(lái)保證您的域的身份。如果您和大多數(shù)域所有者一樣,您可能只從少數(shù)幾個(gè)證書(shū)頒發(fā)機(jī)構(gòu)獲得證書(shū)。CAA(Certificate Authority Authorization,證書(shū)頒發(fā)機(jī)構(gòu)授權(quán))允許您聲明您實(shí)際使用的證書(shū)頒發(fā)機(jī)構(gòu),禁止其他機(jī)構(gòu)為您的域頒發(fā)證書(shū)。
以下是您使用 CAA 的一些原因:
- 您希望降低來(lái)自不安全證書(shū)頒發(fā)機(jī)構(gòu)的風(fēng)險(xiǎn)。您可以使用 CAA 將您的域限制為您信任的證書(shū)頒發(fā)機(jī)構(gòu),而您信任這些機(jī)構(gòu)不會(huì)頒發(fā)未經(jīng)授權(quán)的證書(shū)。
- 您希望阻止員工從未經(jīng)授權(quán)的供應(yīng)商處獲取證書(shū)。
設(shè)置 CAA 很容易。使用便捷的 CAA 生成器檢查您授權(quán)的證書(shū)頒發(fā)機(jī)構(gòu)。然后在域的 DNS 中發(fā)布生成的 DNS 記錄。您的域需要由支持 CAA 的 DNS 提供商托管。幸運(yùn)的是,主要的 DNS 提供商現(xiàn)在都支持 CAA。
CAA 是由 RFC 6844 定義的 IETF 標(biāo)準(zhǔn)。自 2017 年 9 月 8 日起,所有公共證書(shū)頒發(fā)機(jī)構(gòu)都必須遵守 CAA 記錄。在為域頒發(fā)證書(shū)之前,他們必須檢查域中的 CAA 記錄,如果 CAA 記錄集沒(méi)有授權(quán)它們,則拒絕頒發(fā)證書(shū)。(如果沒(méi)有 CAA 記錄,則允許其發(fā)布。)
CAA 和子域
域的 CAA 記錄集也適用于所有子域。如果子域有它自己的 CAA 記錄集,它將優(yōu)先。
例如,在證書(shū)頒發(fā)機(jī)構(gòu)為頒發(fā)證書(shū)之前 http://www.example.com 網(wǎng)站,它將按以下順序查詢(xún)域中的 CAA 記錄集,并使用它找到的第一個(gè)記錄集:
http://www.example.com
http://example.com
CAA 和 CNAME
如果域名創(chuàng)建了 CNAME(也稱(chēng)為別名)指向另外一個(gè)域名(CNAME 目標(biāo)),則證書(shū)頒發(fā)機(jī)構(gòu)還會(huì)在 CNAME 目標(biāo)以及目標(biāo)的所有父域中查找 CAA 記錄集。如果沒(méi)有找到 CAA 記錄集,證書(shū)頒發(fā)機(jī)構(gòu)將繼續(xù)搜索原始域名的父域。
例如,如果 http://blog.example.com 的 CNAME 記錄指向 http://blog.example.net,則證書(shū)頒發(fā)機(jī)構(gòu)按以下順序查找 CAA 記錄集:
blog.example.netexample.netexample.com
也就是說(shuō)自己的域名如果 CNAME 指向了第三方域名(比如常用在 CDN 和智能 DNS),你的域名 CAA 策略由第三方域名 CAA 記錄優(yōu)先決定,如果第三方域名沒(méi)有 CAA 記錄,自己的域名 CAA 策略才完全有效。
當(dāng)然,這個(gè)并不是全局的限制,比如上述 http://blog.example.com 這個(gè)域名要申請(qǐng) SSL 證書(shū)會(huì)受到 http://blog.example.net 及其父域 http://example.net 的 CAA 策略限制,http://www.example.com 沒(méi)有 CNAME 記錄并不受此限。
但是,在上述 CNAME 記錄存在的情況下,申請(qǐng)通配符證書(shū) *.example.com
情況會(huì)怎樣?理論上會(huì)受到第三方域名 CAA 記錄的限制。
局限性
不管 CAA 怎么說(shuō),一個(gè)惡意或完全被破壞的證書(shū)頒發(fā)機(jī)構(gòu)都可以為您的域頒發(fā)證書(shū)。此外,DNS 記錄可以被強(qiáng)大的攻擊者欺騙,欺騙證書(shū)頒發(fā)機(jī)構(gòu)認(rèn)為它已被授權(quán)。
然而,在實(shí)踐中,CAA 可以保護(hù)域所有者不受證書(shū)頒發(fā)機(jī)構(gòu)中最近的許多安全漏洞的影響。盡管存在局限性,發(fā)布 CAA 政策是一種非常明智的安全措施。
為了增加保護(hù),請(qǐng)使用證書(shū)透明度監(jiān)視器(如 Cert Spotter)在頒發(fā)的證書(shū)違反您的 CAA 策略時(shí)向您發(fā)出警報(bào)。
支持 CAA 的 DNS
服務(wù)商
主流的域名服務(wù)商,國(guó)內(nèi)如
阿里云解析 DNS 和
DSNPOD(騰訊云),國(guó)外如 Cloudflare、Azure DNS、AWS Route 53 和 Google Cloud DNS,都可以支持 CAA 記錄。
更多廠(chǎng)商列表可以參考這里:
https://sslmate.com/caa/support軟件
| Software/Provider | Support | Comments | | ------------------- | ------- | ------------------------------------------------------------ | | BIND | Yes | Prior to version 9.9.6 use RFC 3597 syntax | | dnsmasq | Yes | Use --dns-rr option with hex data | | Knot DNS | ≥2.2.0 | | | ldns | ≥1.6.17 | | | NSD | Yes | Prior to version 4.0.1 use RFC 3597 syntax | | OpenDNSSEC | Yes | With ldns ≥1.6.17 | | PowerDNS | ≥4.0.0 | Versions 4.0.3 and below are buggy when DNSSEC is enabled. | | Simple DNS Plus | ≥6.0 | | | tinydns | Yes | Use generic record syntax | | Windows Server 2016 | Yes | Use RFC 3597 syntax |
CAA 記錄格式
CAA 記錄由以下元素組成:
| 標(biāo)簽 | 描述 | | ----- | ------------------------------------------------------------ | | flag | 0-255 之間的無(wú)符號(hào)整數(shù) | | tag | 用來(lái)表示關(guān)鍵標(biāo)志,RFC 有定義 | | value | 與 tag 關(guān)聯(lián)的值 |
CAA 記錄的規(guī)范的表示法是:
CAA <flags> <tag> <value>
RFC 目前定義了 3 個(gè)可用的 tag:
issue
:明確授權(quán)單個(gè)證書(shū)頒發(fā)機(jī)構(gòu)頒發(fā)主機(jī)名的證書(shū)(任何類(lèi)型)。issuewild
:明確授權(quán)單個(gè)證書(shū)頒發(fā)機(jī)構(gòu)為主機(jī)名頒發(fā)通配符證書(shū)(只有通配符)。iodef
:指定認(rèn)證機(jī)構(gòu)可以向其報(bào)告策略違規(guī)的 URL 或郵箱。
創(chuàng)建 CAA 記錄
可以使用
https://sslmate.com/caa/ 來(lái)生成,示例:
通用(適用于一般 DNS 服務(wù)商或者域名注冊(cè)商)
For Google Cloud DNS, Route 53, DNSimple, and other hosted DNS services
Name Type Valuesysin.org. CAA 0 issue "digicert.com" 0 issue "letsencrypt.org"
添加 CAA 記錄
- 記錄類(lèi)型選擇 CAA
- Name 或者主機(jī)記錄填寫(xiě) @ 表示頂級(jí)域名,會(huì)自動(dòng)應(yīng)用到多級(jí)域名。
- 記錄值填寫(xiě)
0 issue "證書(shū)頒發(fā)機(jī)構(gòu)域名"
。
如果如果你用 Let's Encrypt 頒發(fā)的免費(fèi)證書(shū),
CAA data
部分直接填寫(xiě)
0 issue"letsencrypt.org"
即可。
允許多個(gè)證書(shū)頒發(fā)機(jī)構(gòu),添加多條即可。
- 你還可以添加一條為
0 iodef "mailto: 你的郵箱"
的 CAA 記錄,表示如果發(fā)現(xiàn)違背 CAA 記錄的情況給這個(gè)郵箱發(fā)郵件通知。
檢測(cè)方法
dig
# dig sslmate.com caa; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> sslmate.com caa;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21947;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;sslmate.com. IN CAA;; ANSWER SECTION:sslmate.com. 7200 IN CAA 0 issue "sectigo.com"sslmate.com. 7200 IN CAA 0 issuewild ";"sslmate.com. 7200 IN CAA 0 iodef "mailto:security@opsmate.com"sslmate.com. 7200 IN CAA 0 issue "letsencrypt.org"
nslookup
注意:Windows 中目前并不支持 type=caa 查詢(xún),請(qǐng)?jiān)?Unix-Like 系統(tǒng)中使用。
# nslookup> set type=caa> sslmate.comServer: 183.60.83.19Address: 183.60.83.19#53Non-authoritative answer:sslmate.com rdata_257 = 0 issuewild ";"sslmate.com rdata_257 = 0 iodef "mailto:security@opsmate.com"sslmate.com rdata_257 = 0 issue "letsencrypt.org"sslmate.com rdata_257 = 0 issue "sectigo.com"Authoritative answers can be found from:
使用 SSL Test 在線(xiàn)檢測(cè),會(huì)提示:
DNS Certification Authority Authorization (CAA) Policy found for this domain. MORE INFO ?
關(guān)鍵詞:創(chuàng)建,方法,記錄