Wie gebe ich einen starken (langen) DKIM-Schlüssel in DNS ein?


19

Ich versuche, einen 4028-Bit-DKIM-Schlüssel in DNS einzugeben, und es scheint, dass ich sowohl das UDP-512-Byte-Limit als auch die maximale Datensatzgröße für einen TXT-Datensatz überschreite.

Wie erstellt jemand einen großen Schlüssel (mit implizit größerer codierter Größe) richtig und importiert ihn in DNS?


Benötigen Sie mehr Details; Was ist die DNS-Server-Software?
JGurtz

1
Haben Sie Ihre Schlüsselgröße sorgfältig überlegt? Der RFC besagt: "Verifizierer MÜSSEN in der Lage sein, Signaturen mit Schlüsseln zwischen 512 Bit und 2048 Bit zu validieren, und sie KÖNNEN in der Lage sein, Signaturen mit größeren Schlüsseln zu validieren." Daher wird Ihr langer Schlüssel möglicherweise nicht überprüft.
HTTP500

@JGurtz Wir verwenden "UltraDNS", einen gehosteten Dienst.
goodguys_activate

@Jason - Wir können 2048 machen, aber ich denke, dass die Bitlänge das UDP-Paketlimit überschreiten kann.
goodguys_activate

1
Vielleicht sollten Sie bedenken, dass die Probleme, die Sie durch die Verwendung eines ungewöhnlich langen Schlüssels verursachen, die Vorteile, die Sie sich daraus erhoffen, bei weitem überwiegen.
John Gardeniers

Antworten:


25

Sie müssen sie im Textfeld teilen. Ich glaube, dass 2048 die praktische Grenze für Schlüsselgrößen ist. Teilen Sie das Textfeld in Teile mit maximal 255 Zeichen auf. Es gibt Overhead für jede Aufteilung.

Es gibt zwei Formate für lange Felder.

TXT "Teil eins" "Teil zwei"

TXT ("Teil eins" "Teil zwei")

Beide werden als "Teil von Teil zwei" kombiniert. Weitere Details von Zytrax.

Um meinen dkim-Eintrag zu generieren, füge ich meine öffentliche Schlüsseldatei ein und setze sie in Anführungszeichen.
Meine öffentliche Schlüsseldatei enthält Folgendes:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB

Nach dem Bearbeiten des Schlüssels in meiner DNS-Zonendatei wird Folgendes angezeigt:

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

DNS gibt es wie folgt zurück:

 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 behandelt es als eine lange Zeichenfolge ohne zusätzliche Leerzeichen, in denen die Zeilen verbunden sind. Alle " "Sequenzen werden ignoriert.


Kannst du ein Beispiel geben? dafür kann ich nicht herausfinden, wie man klar macht, was Teil 1 und Teil 2 ist .... #threadnecro
janw

1
@janw Ich habe einen meiner Schlüssel als Beispiel hinzugefügt. Dieser Schlüssel ist nur 1024 Bits.
BillThor

5
TNX für die schnelle Antwort. Aber dieser Schlüssel passt in einen 255er Schlüssel. Ich verstehe also immer noch nicht, wie Sie es in mehrere Schlüssel aufteilen.
Rechtsanwalt

1
Es ist nicht DNS, das die " "Sequenzen ignoriert , und das beweisen Sie in Ihrem letzten Zitat. Es ist SPF RFC 4408, Abschnitt 3.1.3, der definiert, dass die Verkettung von Anwendungen verwendet werden soll, die die DNS-Einträge für die SPF-Validierung lesen.
Phil

3
@Alnitak Der zutreffende RFC für diesen Fall lautet tools.ietf.org/html/rfc6376#section-3.6 . Zeichenfolgen werden ohne Leerzeichen verkettet. SPF und andere Formate folgen den gleichen Regeln, sodass Pausen an beliebigen Stellen platziert werden können. Dies kann aus Gründen der Lesbarkeit oder zur Begrenzung der Datensatzgröße erfolgen.
BillThor

1

Wenn es sich um Amazon Route 53 handelt, verwenden Sie keine Zeilenumbrüche (nur Leerzeichen) zwischen den Abschnitten.

"do it" "this way"

"not like"
"this"

Siehe /server//a/763871/80856


1

Wenn Sie die poweradmin-Benutzeroberfläche für pdns verwenden, können Sie einfach den gesamten dkim-String in das Eingabefeld eingeben.

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

0

Es ist in Ordnung, wenn der Datensatz größer als das UDP-512-Byte-Limit ist, da DNS TCP verwendet.

Dies sollte für den Benutzer transparent sein, aber manchmal filtern / blockieren fehlerhafte Firewall-Appliances (wie Cisco PIX / ASA) diese größeren Abfragen.


0

Ich weiß, dass dieser Beitrag uralt ist, aber ich habe ihn heute gefunden, als ich "DKIM 2048-Bit-Schlüssel mit UltraDNS" abgefragt habe. Mein DNS-Team hatte versucht, den Schlüssel mit Anführungszeichen und einem Leerzeichen dazwischen in zwei Teile aufzuteilen. Dies führte dazu, dass UltraDNS drei Pakete (das in der Mitte war leer) auslieferte, was zu inkonsistenten Validierungsergebnissen führte.

In der UltraDNS-Systemsteuerung funktionierte es für mich nur, den gesamten Datensatz in Anführungszeichen ohne mehrere Sätze von Anführungszeichen, Trennzeichen usw. zu senden. Funktioniert jetzt wie erwartet.


-1

Wenn Sie MySQL / MariaDB als DNS-Backend verwenden, können Sie wie bei PowerDNS die Größe Ihrer Inhaltsspalte ändern.

Die Standardlänge für PowerDNS-Inhalte ist VARCHAR (255).

So wird Ihre DKIM-Signatur auf 255 Zeichen gekürzt

um dies zu beheben

Ändern Sie einfach die Inhaltsgröße über die MySQL CLI / MariaDB CLI

mysql -u root -p

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

Starten Sie Ihren DNS-Dienst neu (zB PowerDNS)

service pdns restart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.