如何在 DNS 中输入强(长)DKIM 密钥?

Chr*_*ski 22 domain-name-system email dkim domainkeys

我试图在 DNS 中输入一个 4028 位的 DKIM 密钥,似乎我超出了 UDP 512 字节限制和 TXT 记录的最大记录大小。

有人如何正确创建大密钥(隐含更大的编码大小)并将其导入 DNS?

Bil*_*hor 32

您需要在文本字段中拆分它们。我相信 2048 是密钥大小的实际限制。将文本字段拆分为不超过 255 个字符的部分。每个拆分都有开销。

长字段有两种格式。

TXT“第一部分”\“第二部分”

TXT(“第一部分”“第二部分”)

两者都将合并为“part onepart two”。 更多细节来自 Zytrax。

为了生成我的 dkim 条目,我插入了我的公钥文件并将其用引号括起来。
我的公钥文件包含以下内容:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB
Run Code Online (Sandbox Code Playgroud)

在我的 dns 区域文件中编辑密钥后显示如下:

dkim3._domainkey        IN      TXT     ("v=DKIM1; t=s; p=" 
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3"
"q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0"
"ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB")
Run Code Online (Sandbox Code Playgroud)

DNS 返回如下:

 bill:~$ host -t TXT dkim3._domainkey.systemajik.com
 dkim3._domainkey.systemajik.com descriptive text "v=DKIM1\; t=s\; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3" "q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0" "ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB"
Run Code Online (Sandbox Code Playgroud)

DNS 将其视为一个长字符串,各行之间没有多余的空格。所有" "序列都被忽略。

  • Tnx 的快速回复。但是这个键适合 255 键。所以我仍然不明白你如何将它分成多个键。 (5认同)
  • @Alnitak 适用于这种情况的 RFC 是 https://tools.ietf.org/html/rfc6376#section-3.6。字符串被连接在一起,它们之间没有空格。SPF 和其他格式遵循相同的规则,允许将中断放置在任意位置。这样做可以提高可读性或限制记录大小。 (3认同)
  • DNS 不会忽略“”“”序列,您实际上在最后的引用中证明了这一点。[SPF RFC 4408](https://www.ietf.org/rfc/rfc4408.txt) 第 3.1.3 节定义了读取 DNS 记录以进行 SPF 验证的应用程序应使用串联。 (2认同)