我可以简单地更改 DKIM(DNS TXT 记录)中使用的 RSA 密钥而不更改 DKIM 选择器吗?或者这会导致任何问题吗?
如果不是,那么 DKIM 选择器的目的是什么?
顺便问一下:20120113
我所说的选择器是20120113._domainkey.gmail.com
答案1
正如你所读到的这里“。...在域名中添加一个选择器,用于查找 DKIM 公钥信息...“。
此外,在维基百科条款:”...接收 SMTP 服务器使用域名和选择器执行 DNS 查找 [...] 选择器是一种简单的方法,允许签名者随时添加和删除密钥...“
换句话说,如果你要发送 DKIM 签名的电子邮件,你必须告诉外部邮件服务器如何他们可以检索您的 RSA 密钥来检查您的电子邮件的有效性。RSA 密钥已发布到您的 DNS 中,但是在哪里? 哪个 DNS 查询将检索它?他们如何知道哪个 DNS 查询/记录解析?这是选择器发挥作用的地方:如果您从域发送邮件example.com
,并且在邮件中声明whatever
为选择器,则:
- 在传出的邮件头中您需要引用您的域和相关选择器,如下所示:
DKIM 签名 [...] d=example.com; [...] s=whatever
- 在您的 DNS 中,您必须提供发布 RSA 密钥
TXT
的记录,如下所示:whatever._domainkey.example.com
whatever._domainkey.example.com IN TXT“k=rsa\; t=s\; p=MIGfMA[...]AQAB”
如您所见,DNS查询的形式为<选择器>._domainkey.<你的域名>
基于此,我们可以说:
RSA 密钥可以替换/更新,而不会对选择器产生任何影响。显然,关键是,当您更新密钥的一侧(公开的密钥,在 DNS 上发布)时,您也会更改另一侧(用于“签署”您发送的邮件的密钥);
如果在更新 RSA 密钥时保持选择器不变,则会产生副作用……远程客户端(不是服务器;我说的是管理员) 无论出于什么原因想要检查其旧的/存档的电子邮件中包含的 DKIM 签名,都将无法通过验证过程(因为存档的电子邮件已使用私钥签名,而该私钥的公钥(即在 DNS 上发布的公钥)已更新并且现在已不同!)。
我想补充一点,根据我的经验,我习惯认为 DKIM 签名/验证是一个针对电子邮件传输的过程,而不是验证客户端。所以我敢打赌,在不改变选择器的情况下更新 KEY 是相当安全的。
我还认为……如果您要更新密钥,则必须更改签名代码(需要指向新私钥)和 DNS(以在 TXT 记录中发布新公钥)。那么,为什么不也更改选择器(再次,在两侧?)。您最终将拥有二在 DNS 上发布选择器,一个指向旧密钥,另一个指向新密钥。这样,SMTP 传输期间一切都会顺利进行,而且 MUA 也能够验证旧/存档的电子邮件,因为与旧选择器关联的旧密钥仍然可用。
答案2
我可以简单地更改 DKIM(DNS TXT 记录)中使用的 RSA 密钥而不更改 DKIM 选择器吗?或者这会导致任何问题吗?
是的,就是你能但没有充分的理由我强烈建议不要这样做。
以下是重复使用选择器不是一个好主意的一些原因:
- DNS 更改可能需要一些时间才能传播。如果在密钥更改后重复使用选择器,则可能导致密钥更改后不久发送的电子邮件验证失败。
- 您不知道从发送到验证需要多长时间。这可能会导致较旧的消息在密钥更改后无法通过验证。延迟的一些可能原因是:
- 消息在传输过程中被卡住。
- 虽然我认为这并不常见,但验证也可以在 MUA 内部进行([Thunderbird 有一个插件可以做到这一点][1])
- 摘自 RFC:“使用新密钥重新使用选择器(例如,更改与用户名称关联的密钥)使得无法区分由于密钥不再有效而无法验证的消息和实际伪造的消息。因此,不建议签名者重新使用新密钥的选择器。更好的策略是将新密钥分配给新选择器。”
DKIM 选择器的用途是什么?
“支持每个签名域的多个并发公钥”。以下是并发密钥的一些用例:
- “除了管理上的便利之外,选择器还可以无缝地定期替换公钥。”
- 允许不同的实体(使用不同的密钥和选择器)签署您的电子邮件,而无需共享私钥。这适用于:
- 将签名委托给外部组织
- 行政分散的组织
- 可以明确撤销密钥(通过将公钥数据(“p=”标签)留空)。
所有引述均来自 [RFC 6376][2]。[1]: https://addons.mozilla.org/en-US/thunderbird/addon/dkim-verifier/ [2]: https://www.rfc-editor.org/rfc/rfc6376#section-3.1
答案3
你能这样做。但这不一定是 BCP。
拥有多个选择器的原因是为了使密钥在旋转之后还能在一段时间内保持有效。
例如,如果您更改选择器 20120113 中使用的 RSA 密钥,那么任何仍在某个队列中且稍后投递的消息都将无法通过 DKIM,因为密钥已更改。
理想情况下,如果您今天发布,则应发布一个新密钥 20160106,并将其添加为附加选择器。这样,使用这两个密钥的消息都可以得到验证。经过一段合理的时间(比如两周),您可以取消发布旧密钥。
(我假设您实际上并不是字面意思上的密钥 20120113._domainkey.gmail.com?如果您确实在谈论 Gmail 密钥,请在进行任何更改之前停下来并与 John RG 进行内部沟通。)