跳到主要内容

4.1. Syntax (语法)

4.1 Syntax (语法)

CAA RR 包含由标签-值对组成的单个属性 (Property)。FQDN 可以关联多条 CAA RR, 且给定的属性标签 (Property Tag) 可以在这些 RR 中出现多次。

CAA RR 的 RDATA 段包含一个属性。属性由以下部分组成:

+0-1-2-3-4-5-6-7-|0-1-2-3-4-5-6-7-|
| Flags | Tag Length = n |
+----------------|----------------+...+---------------+
| Tag char 0 | Tag char 1 |...| Tag char n-1 |
+----------------|----------------+...+---------------+
+----------------|----------------+.....+----------------+
| Value byte 0 | Value byte 1 |.....| Value byte m-1 |
+----------------|----------------+.....+----------------+

其中 n 为 Tag Length 字段指定的长度, m 为 Value 字段中剩余八位字节数。二者满足 (m = d - n - 2), d 为 RDATA 段长度。

各字段定义如下:

Flags (标志): 包含下列字段的一个八位字节:

  • 位 0, Issuer Critical Flag (颁发者关键标志): 若值为 "1", 则该属性为关键的。若某 FQDN 的相关 RRset 包含针对未知或不支持的属性标签的 CAA 关键属性, 则 CA 绝对不能为该 FQDN 颁发证书。

请注意, 按照 [RFC1035] 的约定, 位 0 是最高有效位, 位 7 是最低有效位。因此 Flags 取值为 1 表示位 7 被置位, 取值为 128 表示位 0 被置位。

其余位保留供将来使用。

为与 CAA 的未来扩展兼容, 符合本版 CAA 规范的 DNS 记录必须将保留标志位清零 (置 "0")。解释 CAA 的应用程序必须忽略所有保留标志位的取值。

Tag Length (标签长度): 单个八位字节的无符号整数, 以八位字节为单位给出标签长度。标签长度必须至少为 1。

Tag (标签): 属性标识符, 即 ASCII 字符序列。

标签可以包含 ASCII 字符 "a" 至 "z", "A" 至 "Z" 和数字 0 至 9。标签不得包含任何其他字符。标签匹配不区分大小写。

提交给 IANA 注册的标签不得包含除 (小写) ASCII 字符 "a" 至 "z" 和数字 0 至 9 以外的字符。

Value (值): 表示属性值的八位字节序列。属性值以二进制编码, 可以采用子格式。

Value 字段的长度隐式为封闭 RDATA 段的剩余长度。

4.1.1 规范表示形式

CAA 记录的规范表示形式为:

CAA <flags> <tag> <value>

其中:

Flags (标志): 0 至 255 之间的无符号整数。

Tag (标签): 非零长度的小写 ASCII 字母与数字序列。

Value (值): Value 字段, 表示为 (1) 无内部空格的连续字符, 或 (2) 引号字符串。参见 [RFC1035] 第 5.1 节中指定的 <character-string> 格式, 但请注意 Value 字段不包含长度字节且不限于 255 个字符。