Jak wprowadzić silny (długi) klucz DKIM do DNS?


19

Próbuję wprowadzić 4028-bitowy klucz DKIM do DNS i wydaje się, że przekraczam zarówno limit bajtów UDP 512, jak i maksymalny rozmiar rekordu dla rekordu TXT.

W jaki sposób ktoś prawidłowo tworzy duży klucz (z implikowanym większym zakodowanym rozmiarem) i importuje go do DNS?


Potrzebujesz więcej szczegółów; jakie jest oprogramowanie serwera DNS?
JGurtz

1
Czy dokładnie przemyślałeś swój rozmiar klucza? RFC stwierdza: „Weryfikatorzy MUSZĄ być w stanie zweryfikować podpisy przy użyciu kluczy od 512 do 2048 bitów i MOGĄ być w stanie zweryfikować podpisy przy użyciu większych kluczy”. Twój długi klucz może nie zostać zweryfikowany.
HTTP500

@JGurtz Używamy „UltraDNS”, jest to usługa hostowana.
goodguys_activate

@Jason - Możemy zrobić 2048, ale myślę, że długość bitów może przekraczać limit pakietów UDP.
goodguys_activate

1
Być może powinieneś wziąć pod uwagę, że problemy, które stwarzasz przy użyciu niezwykle długiego klucza, znacznie przewyższają korzyści, które możesz z niego uzyskać.
John Gardeniers,

Odpowiedzi:


25

Musisz podzielić je w polu tekstowym. Uważam, że 2048 to praktyczny limit dla kluczowych rozmiarów. Podziel pole tekstowe na części o długości do 255 znaków. Każdy podział dzieli się na koszty ogólne.

Istnieją dwa formaty dla długich pól.

TXT „część pierwsza” \ „część druga”

TXT („część pierwsza” „część druga”)

Oba zostaną połączone jako „część pierwsza część druga”. Więcej szczegółów od Zytrax.

Aby wygenerować wpis dkim, wstawiam plik klucza publicznego i zawijam go w cudzysłów.
Mój plik klucza publicznego zawiera następujące elementy:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB

Po edycji klucza w mojej strefie dns plik wygląda następująco:

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

DNS zwraca go w następujący sposób:

 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 traktuje go jako jeden długi ciąg bez żadnych spacji w miejscu łączenia linii. Wszystkie " "sekwencje są ignorowane.


Czy możesz podać przykład? w tym celu nie mogę wymyślić, jak wyjaśnić, która część 1 i część 2 jest .... #threadnecro
Jan

1
@janw Dodałem jeden z moich kluczy jako przykład. Ten klucz ma tylko 1024 bity.
BillThor,

5
Tnx za szybką odpowiedź. Ale ten klucz pasuje do klucza 255. Więc nadal nie rozumiem, jak podzieliłeś go na wiele kluczy.
2013

1
To nie DNS ignoruje " "sekwencje i faktycznie to potwierdzasz w swoim ostatnim cytacie. To SPF RFC 4408 sekcja 3.1.3 określa, że ​​konkatenacja powinna być używana przez aplikacje odczytujące rekordy DNS do sprawdzania poprawności SPF.
Phil

3
@Alnitak Odpowiednie RFC w tym przypadku to tools.ietf.org/html/rfc6376#section-3.6 . Ciągi są łączone bez odstępów między nimi. SPF i inne formaty podlegają tym samym zasadom, pozwalając na umieszczanie przerw w dowolnych miejscach. Można to zrobić w celu zwiększenia czytelności lub ograniczenia rozmiaru rekordu.
BillThor


1

Jeśli używasz poweradmin UI dla pdns, możesz po prostu wpisać cały ciąg dkim w polu wejściowym.

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

0

Jest OK, jeśli rekord jest większy niż limit 512 bajtów UDP, ponieważ DNS użyje TCP.

Powinno to być przejrzyste dla użytkownika, ale czasami wadliwe urządzenia zapory ogniowej (takie jak Cisco PIX / ASA) będą filtrować / blokować te większe zapytania.


0

Wiem, że ten post jest starożytny, ale znalazłem go dzisiaj, gdy pytam o „klucz bitowy DKIM 2048 z UltraDNS”. Mój zespół DNS próbował podzielić klucz na dwie części z cytatami wokół nich i odstępem między nimi. To spowodowało, że UltraDNS obsługiwał 3 pakiety (ten w środku był pusty), co spowodowało niespójne wyniki sprawdzania poprawności.

W panelu sterowania UltraDNS działało dla mnie tylko przesyłanie całego rekordu w cudzysłowie bez wielu zestawów cudzysłowów, ograniczników itp. Działa zgodnie z oczekiwaniami.


-1

Jeśli używasz MySQL / MariaDB jako zaplecza DNS, np. PowerDNS, możesz zmienić rozmiar kolumny treści.

Domyślna długość treści PowerDNS to VARCHAR (255)

Twój podpis DKIM zostanie przycięty do 255 znaków

naprawić to

wystarczy zmienić rozmiar zawartości za pomocą interfejsu CLI MySQL / MariaDB

mysql -u root -p

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

uruchom ponownie usługę DNS (np. PowerDNS)

service pdns restart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.