¿Cómo ingreso una clave DKIM fuerte (larga) en DNS?


19

Estoy tratando de ingresar una clave DKIM de 4028 bits en DNS y parece que estoy excediendo tanto el límite de 512 bytes UDP como también el tamaño máximo de registro para un registro TXT.

¿Cómo alguien crea correctamente una clave grande (con un tamaño codificado mayor implícito) e importa en DNS?


Necesito más detalles; ¿Qué es el software del servidor DNS?
JGurtz

1
¿Has considerado cuidadosamente el tamaño de tu clave? El RFC establece: "Los verificadores DEBEN poder validar firmas con claves que van desde 512 bits a 2048 bits, y PUEDEN poder validar firmas con claves más grandes". Por lo tanto, es posible que su clave larga no se verifique.
HTTP500

@JGurtz Estamos usando "UltraDNS", es un servicio alojado.
goodguys_activate

@ Jason: podemos hacer 2048, pero creo que la longitud de bits puede exceder el límite de paquetes UDP.
goodguys_activate

1
Quizás debería considerar que los problemas que crea mediante el uso de una clave inusualmente larga superan con creces las ventajas que espera obtener de ella.
John Gardeniers

Respuestas:


25

Necesita dividirlos en el campo de texto. Creo que 2048 es el límite práctico para los tamaños de clave. Divida el campo de texto en partes de 255 caracteres o menos. Hay gastos generales para cada división.

Hay dos formatos para campos largos.

TXT "primera parte" \ "segunda parte"

TXT ("parte uno" "parte dos")

Ambos se combinarán como "parte uno, parte dos". Más detalles de Zytrax.

Para generar mi entrada dkim inserto mi archivo de clave pública y lo envuelvo entre comillas.
Mi archivo de clave pública contiene lo siguiente:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD78Ki2d0zmOlmjYNDC7eLG3af12KrjmPDeYRr3
q9MGquKRkRFlY+Alq4vMxnp5pZ7lDaAXXwLYjN91YY7ARbCEpqapA9Asl854BCHMA7L+nvk9kgC0
ovLlGvg+hhqIPqwLNI97VSRedE60eS+CwcShamHTMOXalq2pOUw7anuenQIDAQAB

Después de editar la clave en mi archivo de zona DNS aparece de la siguiente manera:

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

DNS lo devuelve de la siguiente manera:

 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 lo trata como una cadena larga sin espacios adicionales donde se unen las líneas. Todas las " "secuencias son ignoradas.


¿Puedes dar un ejemplo? para esto no puedo entender cómo dejar en claro qué es la parte 1 y la parte 2 ... #threadnecro
enero

1
@janw He agregado una de mis claves como ejemplo. Esta clave tiene solo 1024 bits.
BillThor

55
Tnx por la rápida respuesta. Pero esta clave cabe en una clave 255. Así que todavía no entiendo cómo lo divides en varias claves.
enero

1
No es el DNS el que ignora las " "secuencias y en realidad lo demuestra en su última cita. Es SPF RFC 4408 sección 3.1.3 que define que las aplicaciones que leen los registros DNS para la validación SPF deben usar la concatenación.
Phil

3
@Alnitak El RFC aplicable para este caso es tools.ietf.org/html/rfc6376#section-3.6 . Las cadenas se concatenan sin espacios entre ellas. SPF y otros formatos siguen las mismas reglas que permiten colocar descansos en ubicaciones arbitrarias. Esto se puede hacer para facilitar la lectura o para limitar el tamaño del registro.
BillThor


1

Si usa la interfaz de usuario de poweradmin para pdns, puede ingresar toda la cadena dkim en el campo de entrada.

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

0

Está bien si el registro es mayor que el límite UDP de 512 bytes porque el DNS usará TCP.

Esto debería ser transparente para el usuario, pero a veces los dispositivos de firewall con errores (como Cisco PIX / ASA) filtrarán / bloquearán estas consultas más grandes.


0

Sé que esta publicación es antigua, pero la encontré hoy al consultar "DKIM 2048 bit key with UltraDNS". Mi equipo de DNS había intentado dividir la clave en dos partes con comillas y un espacio entre ellas. Eso estaba causando que UltraDNS sirviera 3 paquetes (el que estaba en el centro estaba vacío) lo que causó resultados de validación inconsistentes.

Lo que funcionó para mí en el panel de control de UltraDNS fue enviar el registro completo entre comillas sin múltiples conjuntos de comillas, delimitadores, etc. Funciona como se esperaba ahora.


-1

Si está utilizando MySQL / MariaDB como su servidor DNS, como PowerDNS, puede cambiar el tamaño de su columna de contenido.

La longitud predeterminada del contenido de PowerDNS es VARCHAR (255)

Por lo tanto, su firma DKIM se recortará a 255 caracteres

para arreglar esto

simplemente cambie el tamaño del contenido a través de MySQL CLI / MariaDB CLI

mysql -u root -p

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

reinicie su servicio DNS (por ejemplo, PowerDNS)

service pdns restart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.