Route 53 不允许添加 DKIM 密钥,因为长度太长

Gas*_*sim 57 amazon-web-services amazon-route53

以下是我输入 DKIM 密钥值的方法:

"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwztXzIUqic95qSESmnqX U5v4W4ENbciFWyBkymsmmSNOhLlEtzp/mnyhf50ApwCTGLK9U7goo/ijX/wr5roy XhReVrvcqtIo3+63a1Et58C1J2o4xCvp0K2/lM6hla4B9jSph7QzjYdtWlOJqLRs o0nzcut7DSq/xYcVqvrFDNbutCfG//0wcRVUtGEyLX/a/7mAAkW6H8UEYMPglQ9c eEDfTT6pzIlqaK9cHGOsSCg4r0N8YxnHFMRzKaZwmudaXTorSbCs7e681g125/vJ e82VV7DE0uvKW/jquZYtgMn7+0rm+2FDYcDx/7lzoByl91rx37MAJaUx/2JHi1EA nwIDAQAB"
Run Code Online (Sandbox Code Playgroud)

此值中没有新行(我特意复制粘贴并在文本编辑器中对其进行了测试)。但由于某种原因,我不断收到 TXT 太长错误:

TXTRDATATooLong遇到在“V = DKIM1; K = RSA; P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwztXzIUqic95qSESmnqX U5v4W4ENbciFWyBkymsmmSNOhLlEtzp / mnyhf50ApwCTGLK9U7goo / IJX / wr5roy XhReVrvcqtIo3 + 63a1Et58C1J2o4xCvp0K2 / lM6hla4B9jSph7QzjYdtWlOJqLRs o0nzcut7DSq / xYcVqvrFDNbutCfG // 0wcRVUtGEyLX /一个/ 7mAAkW6H8UEYMPglQ9c eEDfTT6pzIlqaK9cHGOsSCg4r0N8YxnHFMRzKaZwmudaXTorSbCs7e681g125 / VJ e82VV7DE0uvKW / jquZYtgMn7 + 0rm + 2FDYcDx / 7lzoByl91rx37MAJaUx / 2JHi1EA nwIDAQAB"

我真的不知道我应该怎么做才能解决这个问题。

小智 75

在 Route 53 论坛中看到类似的问题

不幸的是,TXT 记录上每个字符串的 255 个字符限制不是 Route53 限制,而是 DNS 协议本身强加的限制。但是,每个 TXT 记录可以有多个字符串,每个字符串的长度为 255 个字符。您需要将 DKIM 拆分为多个字符串以用于 TXT 记录。您可以通过控制台输入封装在引号中的每个字符串(每行一个字符串)来执行此操作。

重要说明:不要像说明中所说的那样使用“每行一个字符串”——用一个空格分隔字符串,例如。"foo" "bar"不是"foo"\n"bar"。使用DKIMValidator验证签名是否被正确读取。

  • 还要确保每个结束/开始引号之间有 1 个空格——而不是 AWS 在添加 TXT 记录时显示的换行符/cr——这些不是单独的记录。例如:`"p=sdfgkjhsdfg...." "sdklfjsdf.. ..."` < 之间的空格。 (16认同)
  • 换行符 v/s 空间对我来说是个问题。谢谢@bshea (6认同)

小智 57

您可以将其切成带引号的文本块,每个块的最大长度为 255。您不必使每个块都精确。

例如,如果您的值类似于:

"v=DKIM1; k=rsa; p=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc"
Run Code Online (Sandbox Code Playgroud)

您可以在任意位置将其切碎:

"v=DKIM1; k=rsa; p=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab" "cdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc"
Run Code Online (Sandbox Code Playgroud)

请注意,每个块之间是单个空格,而不是换行符!

不出所料,谷歌的设置说明很糟糕。我刚刚写了一个关于如何在 Route53 上执行此操作的完整指南

  • “请注意,每个块之间都是单个空格,而不是换行符!” 这对我很重要,因为它不起作用。切换后立即工作,谢谢! (3认同)

Ove*_*ryd 18

AWS Route53 上的 DKIM

您必须将 DMARC 记录拆分为 255 个字符的部分。如果您碰巧使用 AWS Route53 托管您的 DNS,请将每个用 引用的部分插入"..."记录中。

不要使用换行符拆分部分,因为那将是单独的 TXT 条目。

v=DKIM1; k=rsa; p=ABC123longkeypart1ABC123longkeypart2
Run Code Online (Sandbox Code Playgroud)

变成

"v=DKIM1; k=rsa; p=ABC123longkeypart1" "ABC123longkeypart2"
Run Code Online (Sandbox Code Playgroud)

使用 Terraform 和 Route53

使用 Terraform 配置 Route53 记录时,您还必须将 DKIM 密钥拆分为 255 个最大字符部分。

由于 Terraform 负责引用 TXT 条目,因此您必须只在每个部分之间提供引号,就像这样\"\"

v=DKIM1; k=rsa; p=ABC123longkeypart1ABC123longkeypart2
Run Code Online (Sandbox Code Playgroud)

变成

resource "aws_route53_record" "some_domain_dkim" {
  zone_id = "${aws_route53_zone.some_domain.zone_id}"
  name    = "google._domainkey.some_domain.com."
  type    = "TXT"
  ttl     = "3600"

  records = [
    "v=DKIM1; k=rsa; p=ABC123longkeypart1\"\"ABC123longkeypart2"
  ]
}
Run Code Online (Sandbox Code Playgroud)

另见:https : //www.terraform.io/docs/providers/aws/r/route53_record.html#records


小智 5

您可以简单地选择 1024 而不是 2048 并将其添加到路由 53 在 Google Apps 中生成 TXT 时

  • 没有理由这样做 - 如果您想要 2048,请遵循所选答案。用引号+单空格连接 dkim 记录。它会起作用。 (7认同)