正如您可以在此处阅读“ ... ...在域名中添加了一个选择器,用于查找 DKIM 公钥信息... ”。
此外,在维基百科术语中:“ ...接收 SMTP 服务器使用域名和选择器来执行 DNS 查找 [...] 选择器是一种简单的方法,允许签名者随时添加和删除密钥.. . ”
换句话说,如果你发送DKIM签名的电子邮件,你一定要告诉外部邮件服务器如何他们就可以检索你的RSA密钥来检查你的电子邮件的有效性。RSA 密钥已发布到您的 DNS 中,好的,但是在哪里?哪个 DNS 查询将检索它?他们如何知道哪个 DNS 查询/记录解析?这就是选择器发挥作用的地方:如果您从example.com
域发送邮件,并且在您的邮件中声明whatever
为选择器,则:
DKIM 签名 [...] d=example.com; [...] s=随便
TXT
用于whatever._domainkey.example.com
发布 RSA 密钥的记录,例如:无论._domainkey.example.com 在 TXT "k=rsa\; t=s\; p=MIGfMA[...]AQAB"
如您所见,DNS 查询的格式为<selector>._domainkey.<your_domain>
基于此,我们可以说:
可以替换/更新 RSA 密钥而不会对选择器产生任何影响。显然,当您更新密钥的一侧(在 DNS 上发布的公共密钥)时,另一侧(用于“签署”您的外发邮件的那一侧)也发生了变化,这一点很重要;
如果您在更新 RSA 密钥时保持选择器不变,那么副作用是.... 远程客户端(不是服务器;我说的是MUA)无论出于何种原因想要检查其包含的 DKIM 签名旧的/存档的电子邮件将无法通过验证过程(因为存档的电子邮件已使用私钥签名,该私钥的公钥,即 DNS 上发布的公钥已更新,现在不同了!)。
我想补充一点,根据我的经验,我习惯于认为 DKIM 签名/验证是一个针对电子邮件传输的过程,而不是验证客户端。所以我敢打赌,在不改变选择器的情况下更新 KEY 是非常安全的。
我也认为......如果你要更新密钥,那么你必须同时更改签名代码(需要指向新的私钥)和 DNS(发布新的公共- 在 TXT 记录中输入)。那么,为什么不也改变选择器(再次,在两侧?)。您最终将在 DNS 上发布两个选择器,一个指向旧密钥,另一个指向新密钥。通过这种方式,在 SMTP 传输期间一切都会好起来,而且 MUA 将能够验证旧的/存档的电子邮件,因为与旧选择器关联的旧密钥仍然可用。