首页 > 解决方案 > 我可以使用 Openssl 创建 DKIM 密钥吗

问题描述

我通过以下命令使用OpenSSLprivate创建并键入public

openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key

问题是:

请在您的回答中提供参考


如果上述问题的答案是否定的,我应该使用哪个其他工具来做到这一点?请提供将生成DKIM 密钥的工具命令(privatepublic

标签: emailencryptionopensslnodemailerdkim

解决方案


是的,如果您的 SMTP 服务允许您提供显式密钥,您可以。

一些邮件服务要求他们生成密钥对,而您只获得公钥,他们将私钥隐藏起来,以便在签署电子邮件时使用。如果您的服务允许您向他们提供私钥,那么您就是黄金。

事实上,如果你不使用他们的“easy DKIM”方法,亚马逊 (AWS) 要求你这样做,所以我不得不自己这样做。生成这两个文件后,您需要将私钥安全地发送到您的 SMTP 服务,无论需要什么。然后,您需要为您的 DNS 创建包含密钥公共部分的 TXT 记录。它看起来像这样:

"v=DKIM1; k=rsa; t=y; "
"n=AmazonSES DKIM public key valid 2020/6-2020/12; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRx3I1vkqUygvM4oxOz"
"JUJfdV/QCvpqnOvtL2CuWuSgKcHH7CmVsb9MXGokHDXYRLgMyR8P2GD6peE"
"CdBwBd2vb643rX6saCb7uirI/NcllRsahtfa2Ier6sF8wBhbkWJRmfVhlvT"
"08BYW06MWS5uAkgdg7pFmpwbpTBkeMQMSLwIDAQAB"

DNS 中 TXT 记录的名称将由您的 SMTP 服务决定,或者允许您指定它(称为选择器)。这是一个将被放入签名标头中的字段,以将特定的电子邮件标头与正确的 TXT 记录名称匹配。该名称应该包含一些指示密钥版本或生成日期的信息,因为当您刷新密钥时该名称会发生​​变化。一个示例是上述键的“June2020.AmazonSES”。在这种情况下,TXT 记录名称应为:

June2020.AmazonSES._domainkey.example.com

您永远不应将私钥提供给多个 SMTP 服务。为每个服务生成一个唯一的密钥,因此每个服务至少有一个 TXT 记录。如果它被黑客入侵,这允许您只更新一个,而不会影响您使用的任何其他服务。

此外,使用 DMARC 让从您那里获取邮件的邮件处理器向您发送错误消息(发送到您在 _dmarc TXT 记录中定义的邮箱),这样您就可以决定什么时候工作足够好,可以将其退出测试模式。


推荐阅读