web-dev-qa-db-ja.com

dkimが失敗します:公開鍵が有効ではないようです

Puttygenを使用して公開/秘密rsaキーペアを作成しました。次のレコードをDNSに追加しましたが、dkimが失敗します。公開鍵に問題があるようです。 https://dkimcore.org/c/keycheck で確認したところ、無効であることがわかりました。

v=DKIM1; k=rsa; h=sha256; p=AAAAB3NzaC1yc2EAAAABJQAAAQEArv5BxLaIE0HYkr1RSIqhAUUZ3OPiV81e8d0Q7Iv2jIQ9LCxnw831HteCwMFzry352dW2UfbmjVMesNOiyZWrE2oHYCG/hQ6ocl5KIY/cNrymZYkzFgnG/HeQBU+YZWkRyT7tNzG6IhgFBs7BZdO1iyEJNaAjsdXZJuv7H2Z4r5aDk8n1A0bzfYGhiIX4uSyUbV6T5njsfBX7Un0IBvf/nbEj6NJ+idF0puoz0gWffRWu1zoJfFs8ddjHSGsp4bKQjsm6msAvc7LZ6csmNec1G9UdUAzd+rxETaRIew7p3E6PiPbTfGuLr283V+SZMMume6bgyK3Bg7/bKv80vD71mw==

私の構文に何か問題がありますか?

1
holap

はい。キー自体は特定の形式でパッケージ化する必要があり、間違った形式を使用しています。

RSAキーペアは、単なるランダムなテキストではありません。内部的にはいくつかの大きな数字で構成されており、プログラムが異なれば、それらの数字をバイトにエンコード(シリアル化)する方法も異なります。たとえば、neの前または後になります。それらはビッグエンディアンまたはリトルエンディアンで保存される場合があります。など。一部の形式には、キータイプ自体を示すフィールドがありますが、ないものもあります。

p=で使用しようとしているテキストはSSHv2形式です。ただし、DKIMではPKCS#1 "RSAPublicKey"形式(別名OpenSSL PEM形式)である必要がありますが、DKIM仕様は後でX.509 "SubjectPublicKeyInfo"形式で例を示すことで矛盾し、多くの実装は実際に両方を受け入れます。

PuTTYgenは、これらの公開鍵形式のどちらでもないを出力できます。別のツールを使用する必要があります。 DKIM署名ソフトウェアが提供する鍵生成ツールを使用するのが最善です。

(DKIMソフトウェアに何も付属していない場合は、opensslコマンドで処理できます。そのgenrsaコマンドとgenpkeyコマンドで新しいキーペアを作成できます。その後、rsaまたはpkeyを使用して、パブリックハーフを抽出します。)

2
user1686