我正在尝试使用DKIM协议对通过SMTP命令(使用telnet)发送的消息进行签名,我已在dkim官方网站上应用了所有步骤,如果我验证了它,它仍然是我可以计算出'b'参数的方式用私钥?或使用其他方法? 谢谢
答案 0 :(得分:0)
原始标题:
Subject: ddddd
From: btt@domain.com
To: email@gmail.com
带有DKIM-SIGNATURE的规范化标头:
subject:ddddd
from:btt@domain.com
to:email@gmail.com
DKIM-Signature: v=1;
a=rsa-sha1;
c=relaxed/relaxed;
s=selector1;
d=domain.com;
h=subject:from:to;
i=btt@domain.com;
bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=;
b=
用于对内容进行签名的RSA命令(标头+ Dkimsignature)
openssl dgst -sha1 -sign privateKey.pem content.txt | base64
答案 1 :(得分:0)
subject:ddddd
from:btt@domain.com
to:email@gmail.com
dkim-signature:v=1; a=rsa-sha1; c=relaxed/relaxed; s=selector1; d=domain.com; h=subject:from:to; i=btt@domain.com; bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=; b=
答案 2 :(得分:0)
这是要签名的新内容:
subject:ddddd
from:btt@domain.com
to:email@gmail.com
dkim-signature:v=1; a=rsa-sha1; c=relaxed/relaxed; s=selector1; d=domain.com; h=subject:from:to; i=btt@domain.com; bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=; b=
答案 3 :(得分:0)
不幸的是,它与PowerMta生成的签名不匹配。
我的签名生成的'b':
lNLa3tKsq6IEotwq6Go5vPUjj6zbzpIEqC7Mr90SZFrXPVBNZbHyO4igroLE5Ax77lAAAwEX9+cN
TCeIbzYE08K7kB7I4/k8McDe3T5V+T2jcZuR3ukWK12BkQBAmFZNogynId0tt1WPXK3zHDGdKpHC
oxu5gKfrEVNsHo7gyRc=
使用PowerMta测试后的标头:
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=selector1; d=domain.com; h=Subject:From:To; i=btt@domain.com; bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=; b=j/jYKloUFEbmzj5JdwmR7MCBB+UtuJq5V0wImYElaY/xob8CnRY39Z0TfPonp4y2qtIE/wpqwnT0
YrHcNM8BY3uQ3ovm3pq7lTmwvM6XqA4rgnlhcyZnQO9uoUSGebsbR8KBhwZSpolF7UEcr8TSQdfO
OG+fDZIHeq6G7DAg5cQ=
Subject: ddddd
From: btt@domain.com
To: email@gmail.com
答案 4 :(得分:-1)
本文档对此进行了全部解释:https://www.ietf.org/rfc/rfc6376.txt
首先,您必须规范化要签名的标头字段,包括要生成的DKIM-Signature
标头,然后使用所选的签名算法对其进行签名。
“简单”标头规范化算法不会更改标头 领域。标头字段必须呈现给签名或 验证算法与消息中的内容完全相同 签名或验证。特别是,标头字段名称不得为 大小写折叠,绝不能更改空格。
“松弛”报头规范化算法必须应用 依次执行以下步骤:
将所有标题字段名称(而不是标题字段值)转换为 小写。例如,将“ SUBJect:AbC”转换为“ subject:AbC”。
按如下所述展开所有标题字段连续行 RFC5322;特别是嵌入了终结符的行 连续的标头字段值(即CRLF序列后跟 WSP)必须在没有CRLF的情况下进行解释。实施必须 不要在标题字段值的末尾删除CRLF。
将一个或多个WSP字符的所有序列转换为单个SP 字符。这里的WSP字符包括 线折叠边界。
在每个展开的标头字段末尾删除所有WSP字符 值。
删除冒号前后剩余的所有WSP字符 将标题字段名称与标题字段值分开。的 结肠分隔符必须保留。
对所有希望签名的标头进行规范化之后,就需要对正在生成的DKIM签名应用相同的规范化。
很显然,这时您还没有b=
值,因为对规范化标头进行签名的结果是b=
标记的值。
您需要做的是构造标题,但将b=
标签留空。
例如:
DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;
c=simple; q=dns/txt; i=@eng.example.net;
t=1117574938; x=1118006938;
h=from:to:subject:date;
bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
b=
一旦您对所有要签名的标头(包括要生成的DKIM-Signature标头的部分)进行规范化,就需要使用算法和私钥(不是公钥)对结果进行签名。 !),然后对结果进行base64编码,并将其附加到您生成的DKIM-Signature标头中。
在上面的示例中,您将使用RSA-SHA256算法。
更新:
如果您要签名的原始邮件标题看起来像这样:
Subject: ddddd
From: btt@domain.com
To: email@gmail.com
如果PowerMTA生成的DKIM-Signature标头如下所示:
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=selector1; d=domain.com; h=Subject:From:To; i=btt@domain.com; bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=; b=j/jYKloUFEbmzj5JdwmR7MCBB+UtuJq5V0wImYElaY/xob8CnRY39Z0TfPonp4y2qtIE/wpqwnT0
YrHcNM8BY3uQ3ovm3pq7lTmwvM6XqA4rgnlhcyZnQO9uoUSGebsbR8KBhwZSpolF7UEcr8TSQdfO
OG+fDZIHeq6G7DAg5cQ=
然后您应该要签名的文本如下所示(假设您希望您的b=
值与PowerMTA生成的b=
值相匹配):
subject:ddddd
from:btt@domain.com
to:email@gmail.com
dkim-signature:v=1; a=rsa-sha1; c=relaxed/relaxed; s=selector1; d=domain.com; h=Subject:From:To; i=btt@domain.com; bh=rcr9nmkeqsjAGn29CUiUNJFRSmc=; b=