Как мне ввести сильный (длинный) ключ DKIM в DNS?
Я пытаюсь ввести 4028-битный ключ DKIM в DNS, и кажется, что я превышаю как ограничение 512 байтов UDP, так и максимальный размер записи для записи TXT.
Как правильно создать большой ключ (с подразумеваемым большим кодированным размером) и импортировать его в DNS?
7 ответов
Вам нужно разделить их в текстовом поле. Я считаю, что 2048 - это практический предел для ключевых размеров. Разделите текстовое поле на части по 255 символов или менее. Есть накладные расходы для каждого разделения.
Есть два формата для длинных полей.
TXT "часть первая" \ "часть вторая"
TXT ("часть первая" "часть вторая")
Оба из которых будут объединены как "часть первая часть вторая". Более подробная информация от 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 рассматривает это как одну длинную строку без лишних пробелов, где соединяются строки. Все " "
последовательности игнорируются.
Если это Amazon Route 53, тогда не используйте переводы строк (только пробелы) между кусками.
"do it" "this way"
"not like"
"this"
Если вы используете интерфейс Poweradmin для pdns, вы можете просто ввести всю строку dkim в поле ввода.
v=DKIM1;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxtR3bw1Kbh1B7q4+5aWjTj2YEFwv230gcv+NMp4KouOSLdIr0mCMiwDZpY+7zCdks0zMXtz+F5TPij/NkSAxIKBbJqbIO3mvAhgeI0Vy5aQ5prwnIyXUj54po6AsXbv5Ud2tFbGSsdIhvWiC755d3WaFs8mdWFkpSxprlW6PobCzOWDayWGCvsNfHpjmTxHZinkd3TmLQqE/O6Nb1YnRwQwUCLioSyudV+5Bd2+rXZ2V9FYAOiK2aQi2aSTiUaLCVxft9H6xen3JDaKsuu43QMBrhydoJOCV2QaY82IxqE3GgZrlADu6YEOfotdwD2aA9GRwVB88GqdXL8HwgEGTbwIDAQAB
Я знаю, что этот пост - древний, но я нашел его сегодня, когда запрашивал "20-битный ключ DKIM с UltraDNS". Моя команда DNS попыталась разделить ключ на две части с кавычками вокруг них и пробелом между ними. Это приводило к тому, что UltraDNS обслуживал 3 пакета (один в центре был пуст), что приводило к противоречивым результатам проверки.
Для меня в панели управления UltraDNS было просто отправить всю запись в кавычках без нескольких наборов кавычек, разделителей и т. Д. Работает так, как ожидалось.
Это не самый красивый сценарий, но он экономит время и устраняет опечатки на моих именованных/привязываемых хостах.
#!/usr/bin/env bash
pretty_dkim() {
grep DKIM1 | sed 's/.*v=DKIM/v=DKIM/' | fold -s -w76 |sed 's/^/"/g;s/$/"/g;1 s/^/(/' | tac | sed '1 s/$/)/'| tac ;
}
if [ -t 0 ]; then
cat "$1" | pretty_dkim;
else
pretty_dkim ;
fi
И если новые строки не нужны, вы можете добавить| tr '\n' ' '
Это нормально, если запись превышает ограничение в 512 байтов UDP, потому что DNS будет использовать TCP.
Это должно быть прозрачно для пользователя, но иногда неисправные устройства брандмауэра (такие как Cisco PIX/ASA) будут фильтровать / блокировать эти более крупные запросы.
Если вы используете 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