我可以只更改DKIM(DNS TXTlogging)中使用的RSA密钥,而不更改DKIMselect器,否则会导致任何问题?
如果不是,DKIMselect器的目的是什么?
顺便说一句: 20120113是我在20120113._domainkey.gmail.com谈论的select
正如你可以在这里阅读的“ …select器被添加到域名,用于查找DKIM公钥信息… ”。
此外,在维基百科条款:“ …接收SMTP服务器使用域名和select器来执行DNS查找select器是一个简单的方法,以允许签署者添加和删除任何他们想要的键。 。 “
换句话说,如果您要发送DKIM签名的电子邮件,则必须告诉外部邮件服务器如何检索您的RSA密钥以检查您的电子邮件的有效性。 RSA密钥发布到您的DNS,好的,但在哪里 ? 哪个DNS查询将检索它? 他们将如何知道哪个DNS查询/logging解决? 这是select器起作用的地方:如果从example.com域发送邮件,并在邮件中声明whateverselect器,则:
DKIM-Signature […] d = example.com; […] s =无论如何
TXTlogging来发布你的RSA密钥whatever._domainkey.example.com ,如下所示: any._domainkey.example.com IN TXT“k = rsa \; t = s \; p = MIGfMA […] AQAB”
正如你所看到的,DNS查询的forms是<selector> ._ domainkey。<your_domain>
基于此,我们可以这样说:
RSA密钥可以被replace/更新而不会对select器产生任何影响。 显然,当你更新密钥的一面(公开的那一面,发布在DNS上)时,你也改变了另一面(用来“签名”你的外发邮件)。
如果在更新RSA密钥时不改变select器,那么副作用就是远程客户端(不是服务器;我正在谈论MUA ),无论出于什么原因都想检查包含在其中的DKIM签名旧的/存档的电子邮件将无法validation过程(因为已存档的电子邮件已经使用私人密钥进行了签名,而私人密钥的公开密码已经更新,现在已经不同了!)。
我想补充一点,根据我的经验,我习惯认为DKIM签名/validation是一个针对电子邮件传输的过程,而不是validation客户端。 所以我敢打赌,更新密钥并保持select不变是非常安全的。
我也认为,如果你要更新密钥,你必须改变你的签名代码(需要指向新的私钥)和DNS(发布新的公共密钥TXTlogging中的按键)。 那么,为什么不改变select器(再次,在两边?)。 你最终会在DNS上发布两个select器,一个指向旧密钥,另一个指向新的。 通过这种方式,SMTP传输过程中的一切都会好起来,并且,由于与旧select器关联的旧密钥仍旧可用,所以MUA将能够validation旧的/存档的电子邮件。
是的,你可以 ,但没有一个很好的理由, 我强烈build议不要这样做 。
以下是为什么重复使用select器不是一个好主意的一些原因:
“为每个签名域支持多个并发公钥”。 以下是一些并发密钥的用例:
所有的引用都来自RFC 6376 。
你可以做到这一点。 虽然不一定是BCP。
具有多个select器的原因是特定的,使得一个键在旋转后可以在一段时间内保持有效。
例如,如果更改了select器20120113中使用的RSA密钥,那么任何仍处于某个队列中并稍后传递的消息都会因为密钥已更改而导致DKIM失败。
理想情况下,如果你今天做了,你会发布一个新的密钥,20160106,并添加一个额外的select器。 这样,使用两个密钥的消息都可以被validation。 经过一段合理的时间后,说两周,你可以重新发布旧密钥。
(我假设你真的不是真正意义上的关键20120113._domainkey.gmail.com字面上?如果你真的在谈论一个Gmail密钥,停止和改变任何内容之前约翰·RG内部谈话。)