DNSに強力な(長い)DKIMキーを入力するにはどうすればよいですか?


19

DNSに4028ビットDKIMキーを入力しようとしていますが、UDP 512バイト制限とTXTレコードの最大レコードサイズの両方を超えているようです。

誰かが(暗号化されたサイズが暗示されている)大きなキーを適切に作成し、それをDNSにインポートするにはどうすればよいですか?


詳細が必要です。DNSサーバーソフトウェアとは何ですか?
JGurtz

1
キーのサイズを慎重に検討しましたか?RFCの状態:「検証者は512ビットから2048ビットの範囲のキーで署名を検証できなければならず、より大きなキーで署名を検証できる場合があります。」したがって、長いキーは検証されない場合があります。
HTTP500

@JGurtz「UltraDNS」を使用しています。これはホスト型サービスです。
goodguys_activate

@Jason-2048でもできますが、ビット長がUDPパケットの制限を超える可能性があると思います。
goodguys_activate

1
おそらく、異常に長いキーを使用して作成する問題は、それから得られることを期待する利点をはるかに上回ることを考慮する必要があります。
ジョンガーデニアーズ

回答:


25

テキストフィールドでそれらを分割する必要があります。2048がキーサイズの実際的な制限であると考えています。テキストフィールドを255文字以下の部分に分割します。各分割にはオーバーヘッドがあります。

長いフィールドには2つの形式があります。

TXT "パート1" \ "パート2"

TXT( "パート1" "パート2")

どちらも「パート1パート2」として結合されます。 Zytraxからの詳細

dkimエントリを生成するには、公開キーファイルを挿入し、引用符で囲みます。
私の公開鍵ファイルには次のものが含まれています。

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB

DNSゾーンファイルのキーを編集すると、次のように表示されます。

dkim3._domainkey        IN      TXT     ("v=DKIM1; t=s; p=" 
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3"
"q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0"
"ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB")

DNSは次のように返します。

 bill:~$ host -t TXT dkim3._domainkey.systemajik.com
 dkim3._domainkey.systemajik.com descriptive text "v=DKIM1\; t=s\; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3" "q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0" "ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB"

DNSは、行が結合される余分なスペースのない1つの長い文字列としてそれを扱います。すべての" "シーケンスは無視されます。


例を挙げていただけますか?このため、パート1とパート2が何であるかを明確にする方法がわかりません。...#threadnecro
janw

1
@janwキーの1つを例として追加しました。このキーは1024ビットのみです。
BillThor

5
クイック返信のTnx。ただし、このキーは255キーに収まります。そのため、複数のキーに分割する方法はまだわかりません。
-janw

1
" "シーケンスを無視するのはDNSではなく、実際に最後の引用でそれを証明します。SPF検証のためにDNSレコードを読み取るアプリケーションが連結を使用する必要があることを定義するのは、SPF RFC 4408セクション3.1.3です。
フィル

3
@Alnitakこの場合に適用されるRFCはtools.ietf.org/html/rfc6376#section-3.6です。文字列はスペースなしで連結されます。SPFおよびその他の形式は同じ規則に従い、任意の場所にブレークを配置できます。これは、読みやすくするため、またはレコードサイズを制限するために実行できます。
-BillThor


1

pdnにpoweradmin UIを使用する場合、入力フィールドにdkim文字列全体を入力できます。

v=DKIM1;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxtR3bw1Kbh1B7q4+5aWjTj2YEFwv230gcv+NMp4KouOSLdIr0mCMiwDZpY+7zCdks0zMXtz+F5TPij/NkSAxIKBbJqbIO3mvAhgeI0Vy5aQ5prwnIyXUj54po6AsXbv5Ud2tFbGSsdIhvWiC755d3WaFs8mdWFkpSxprlW6PobCzOWDayWGCvsNfHpjmTxHZinkd3TmLQqE/O6Nb1YnRwQwUCLioSyudV+5Bd2+rXZ2V9FYAOiK2aQi2aSTiUaLCVxft9H6xen3JDaKsuu43QMBrhydoJOCV2QaY82IxqE3GgZrlADu6YEOfotdwD2aA9GRwVB88GqdXL8HwgEGTbwIDAQAB

0

DNSがTCPを使用するため、レコードがUDP 512バイト制限よりも大きい場合は問題ありません。

これはユーザーに対して透過的である必要がありますが、バグのあるファイアウォールアプライアンス(Cisco PIX / ASAなど)がこれらの大きなクエリをフィルタリング/ブロックすることがあります。


0

私はこの投稿が古くからあることを知っていますが、今日、「UltraDNSでDKIM 2048ビットキー」をクエリしたときに発見しました。私のDNSチームは、鍵を2つの部分に分割しようとしました。これにより、UltraDNSが3つのパケット(中央のパケットは空でした)を処理し、一貫性のない検証結果が発生していました。

UltraDNSコントロールパネルで私にとって有効だったのは、複数の引用符、区切り文字などのセットを使用せずに、引用符でレコード全体を送信することだけでした。期待どおりに動作します。


-1

MySQL / MariaDBをDNSバックエンドとして使用している場合(PowerDNSなど)、コンテンツ列のサイズを変更できます。

デフォルトのPowerDNSコンテンツの長さはVARCHAR(255)です

したがって、DKIM署名は255文字にトリミングされます

これを修正する

MySQL CLI / MariaDB CLIを介してコンテンツサイズを変更するだけです

mysql -u root -p

USE powerdns;
alter table records modify column content text not null;

DNSサービス(PowerDNSなど)を再起動します

service pdns restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.