Come posso inserire una chiave DKIM forte (lunga) in DNS?


19

Sto cercando di inserire una chiave DKIM a 4028 bit in DNS e sembra che stia superando sia il limite UDP di 512 byte sia la dimensione massima del record per un record TXT.

In che modo qualcuno crea correttamente una chiave di grandi dimensioni (con dimensioni codificate implicite più grandi) e la importa in DNS?


Hai bisogno di maggiori dettagli; qual è il software del server DNS?
JGurtz,

1
Hai considerato attentamente le dimensioni della chiave? La RFC afferma: "I verificatori DEVONO essere in grado di convalidare le firme con chiavi che vanno da 512 bit a 2048 bit e POSSONO essere in grado di convalidare le firme con chiavi più grandi". Quindi la chiave lunga potrebbe non essere verificata.
HTTP500

@JGurtz Stiamo usando "UltraDNS" è un servizio ospitato.
goodguys_activate

@Jason - Possiamo fare 2048, ma penso che la lunghezza dei bit possa superare il limite del pacchetto UDP.
goodguys_activate

1
Forse dovresti considerare che i problemi che crei attraverso l'uso di una chiave insolitamente lunga superano di gran lunga i vantaggi che speri di trarne.
John Gardeniers,

Risposte:


25

Devi dividerli nel campo di testo. Credo che il 2048 sia il limite pratico per le dimensioni delle chiavi. Dividi il campo di testo in parti 255 caratteri o meno. C'è un sovraccarico per ogni divisione.

Esistono due formati per campi lunghi.

TXT "prima parte" \ "seconda parte"

TXT ("prima parte" "seconda parte")

Entrambi i due si combineranno come "parte prima due". Maggiori dettagli da Zytrax.

Per generare la mia voce dkim inserisco il mio file di chiave pubblica e lo racchiudo tra virgolette.
Il mio file di chiave pubblica contiene quanto segue:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB

Dopo aver modificato la chiave nel mio file dns zone appare come segue:

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

DNS lo restituisce come segue:

 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"

Il DNS lo considera come una stringa lunga senza spazi extra in cui le linee sono unite. Tutte le " "sequenze vengono ignorate.


Puoi fare un esempio? per questo non riesco a capire come mettere in chiaro quale parte 1 e parte 2 è .... #threadnecro
janw

1
@janw Ho aggiunto una delle mie chiavi come esempio. Questa chiave ha solo 1024 bit.
BillThor,

5
Grazie per la risposta rapida. Ma questa chiave si inserisce in una chiave 255. Quindi ancora non capisco come lo dividi in più chiavi.
gennaio

1
Non è il DNS che ignora le " "sequenze e in realtà lo provi nella tua ultima citazione. È SPF RFC 4408 sezione 3.1.3 che definisce che la concatenazione dovrebbe essere utilizzata dalle applicazioni che leggono i record DNS per la convalida SPF.
Phil

3
@Alnitak L'RFC applicabile per questo caso è tools.ietf.org/html/rfc6376#section-3.6 . Le stringhe sono concatenate senza spazi tra loro. SPF e altri formati seguono le stesse regole che consentono di posizionare le interruzioni in posizioni arbitrarie. Questo può essere fatto per leggibilità o per limitare le dimensioni del record.
BillThor,


1

Se usi l'interfaccia utente di poweradmin per pdns puoi semplicemente inserire l'intera stringa dkim nel campo di input.

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

0

Va bene se il record è superiore al limite di 512 byte UDP perché DNS utilizzerà TCP.

Ciò dovrebbe essere trasparente per l'utente, ma a volte le appliance firewall difettose (come Cisco PIX / ASA) filtrano / bloccano queste query più grandi.


0

So che questo post è antico, ma l'ho trovato oggi durante l'interrogazione "Chiave DKIM 2048 bit con UltraDNS". Il mio team DNS aveva tentato di dividere la chiave in due parti con virgolette attorno e uno spazio tra. Ciò stava facendo sì che UltraDNS servisse fino a 3 pacchetti (quello al centro era vuoto), causando risultati di convalida incoerenti.

Ciò che ha funzionato per me nel pannello di controllo di UltraDNS è stato solo quello di inviare l'intero record tra virgolette senza più set di virgolette, delimitatori, ecc. Funziona come previsto ora.


-1

Se stai usando MySQL / MariaDB come backend DNS, come PowerDNS, puoi ridimensionare la colonna del contenuto.

La lunghezza predefinita del contenuto PowerDNS è VARCHAR (255)

Quindi la tua firma DKIM verrà ridotta a 255 caratteri

per risolvere questo problema

basta cambiare la dimensione del contenuto tramite l'interfaccia della riga di comando di MySQL / MariaDB

mysql -u root -p

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

riavvia il tuo servizio DNS (ad es. PowerDNS)

service pdns restart
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.