我承认我在密钥验证方面不是很熟练。我有一个脚本,可以从POP3服务器下载邮件,并尝试在PHP中验证DKIM签名。 我已经找出了正文哈希(bh)验证检查,但无法理解标题验证。
http://www.dkim.org/specs/rfc4871-dkimbase.html#rfc.section.6.1.3
以下是我的邮件头的示例。 我能够使用Mail :: DKIM包在Perl中验证签名,所以我知道签名是好的。 我只是似乎无法理解RFC中的说明并将其转换为PHP代码。
DomainKey-Signature: q=dns; a=rsa-sha1; c=nofws;
s=angrychimp-1.bh; d=angrychimp.net;
h=From:X-Outgoing;
b=RVkenibHQ7GwO5Y3tun2CNn5wSnooBSXPHA1Kmxsw6miJDnVp4XKmA9cUELwftf9
nGiRCd3rLc6eswAcVyNhQ6mRSsF55OkGJgDNHiwte/pP5Z47Lo/fd6m7rfCnYxq3
DKIM-Signature: v=1; a=rsa-sha1; d=angrychimp.net; s=angrychimp-1.bh; c=relaxed/simple;
q=dns/txt; i=@angrychimp.net; t=1268436255;
h=From:Subject:X-Outgoing:Date;
bh=gqhC2GEWbg1t7T3IfGMUKzt1NCc=;
b=ZmeavryIfp5jNDIwbpifsy1UcavMnMwRL6Fy6axocQFDOBd2KjnjXpCkHxs6yBZn
Wu+UCFeAP+1xwN80JW+4yOdAiK5+6IS8fiVa7TxdkFDKa0AhmJ1DTHXIlPjGE4n5;
To: iptest@example.com
Message-ID: <EF.CC.24859.F1DCA9B4>
From: DKIM Tester <noreply@angrychimp.net>
Reply-To: noreply@angrychimp.net
Subject: Automated DKIM Testing (angrychimp.net)
X-Outgoing: dhaka
Date: Fri, 12 Mar 2010 15:24:15 -0800
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
MIME-Version: 1.0
Return-Path: noreply@angrychimp.net
X-OriginalArrivalTime: 12 Mar 2010 23:25:50.0326 (UTC) FILETIME=[5A0ED160:01CAC23B]
我可以从我的DNS成功提取公钥,并且我相信我正在正确规范化标头,但我无法使签名验证通过。我认为我没有正确准备密钥或计算签名验证。
这是否可能(我需要pear扩展或其他东西?)或者在PHP中手动验证DKIM签名是否不可行?