2

ドメインから送信されるニュースレター (メーリング リスト) に DKIM 署名を適用しようとしています。残念ながら、ここでドメインの名前を明らかにすることはできないので、{mydomain}.co.il と呼びます。私のセレクターは「mta1」です。

オンラインの指示に従ってティーを作成しましたが、結果をテストすると、署名のあらゆる面でエラーが発生しました!

http://www.port25.com/support/domainkeysdkim-wizard/を使用して公開鍵と秘密鍵を作成しました。行を含む秘密鍵全体を.pemファイルにコピーしました

-----BEGIN RSA PRIVATE KEY-----
MIICX...{rest of private key goes here}
-----END RSA PRIVATE KEY-----

ドメインで DKIM 署名を使用するように hMailServer をセットアップし、それを秘密鍵に向けて、SHA1 を使用するように指示しました (これは CPU への負荷が少なく、大量のメーリング リストにより適していると理解しています)。

そしてもちろん、次のように DNS レコードをセットアップします。

mta1._domainkey.{mydomain}.co.il = 
v=DKIM1; k=rsa; h=sha1; s=email; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCptw7j4dessLrTmSKC1rg3yyB5
Vql0U+lzVoWXSHKB8f6ly7jgVze4Xp6V9U7OgcT/DRm421pUwcNgjO85yevxvISM
V64wAgfus6sCZI/eL8owRXpclbq89ap59TW75V5I9iDcCqKxpKoqjiuDP2pQwUbB
KphAb+vd8asNX8GRCQIDAQAB

_domainkey.{mydomain}.co.il = 
t=y;o=~;

最初に、 http://dkimcore.org/tools/dkimrecordcheck.htmlでDNS レコードを確認したところ、次のような愚かさがわかりました。

p=  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtjJF/34Z3g5bk/qP7cf0UxSNj 5nAodXgCQ7c0CJq1fIyY3QWl4l4LnYNJ11yIsCB13eQbAzx6gQOiLg0getR17D5i GMmK5EIp5kGn6PC3afjiaXlwS6geM59BINxXAwn6/GTwhdS0i0lnJ7bJePbrC7+E Xn9pxfXr1q79n3RCuwIDAQAB
The p= field must be base64 encoded

...しかし、これは port25.com によって生成された公開鍵の正確なコピーです!

次に、次のような実際の DKIM 署名をテストしました。

dkim-signature: v=1; a=rsa-sha1; d={mydomain}.co.il; s=mta1;
    c=relaxed/relaxed; q=dns/txt; h=From:Reply-To:Subject:Date:Message-ID:To:MIME-Version:Content-Type:List-Help:List-Unsubscribe:List-Post:List-Owner:List-Archive;
    bh=MrAZfkhgb6I02eyuqIKMb+Zg1L0=;
    b=GmncisEWZjOhQfnnEzZNTAbOvqo+7JJSU52tbpA103Alw5jTIy3UF4L6xWpajQjP4P76UyByOcS8cAr9i8VIBxr/qrArqwYpOfd9teQ0Adx58Ywn03dsNWDs+succQSZ3EkrQJFf7cQFdbakEHzrzEAYJYLQaoSx3KbitFf2Kjc=

http://www.appmaildev.com/en/dkim/でDKIM 署名付きメールをテストしたところ、次のエラーが表示されました。

Exception: No records found for given DNS query

...しかし、これは真実ではありません!

次のエラーも発生しました。

============================================================
DKIM result: fail (wrong body hash: MrAZfkhgb6I02eyuqIKMb+Zg1L0=)
============================================================
Signed by: office@{mydomain}.co.il
Expected Body Hash: hr++FhCjnb1cH9c0FJGJsCnCgNA=

私は何を間違っていますか?これを修正するために私ができることを誰かが知っていますか?

4

1 に答える 1

2

最初に気付いたのは、DNS レコードの値の中に空白 (改行など) があるように見えることp=です。キー レコードを作成するときは、base64 テキストの複数行を空白なしで 1 つの長い行に連結する必要があります。

キー レコードのs=(サービス タイプ) および(ハッシュ アルゴリズム) タグは、一般的には使用されません。h=何かがレコードを拒否している場合は、p=値を修正した後、少なくとも一時的にそれらを削除して再テストし、それが問題であるかどうかを確認することをお勧めします。

署名を生成しているソフトウェアについては言及していません。ボディ ハッシュの問題は、正規化の問題 (「厳密」に設定してみてください)、またはメッセージが署名された後のメッセージの破損 (署名または法的免責事項?) が原因である可能性があります。行の先頭にある "From" という単語の前に > を追加するメーラーもあり、ボディ ハッシュも壊れます。

于 2014-03-08T22:28:08.627 に答える