Inicio / Guías / Migrar DKIM de 1024 a 2048 bits sin perder entregabilidad

Migración de DKIM 1024 a 2048 bits: pasos, validación y errores típicos

4,2 · 52 valoraciones

Cómo migrar tu firma DKIM de claves RSA 1024 a 2048 bits: TXT particionado, selector de transición, validación dig y errores DNS comunes.

Migrar DKIM de 1024 a 2048 bits sin perder entregabilidad
Forma parte de DKIM

Las claves DKIM de 1024 bits se consideraron suficientes durante años, pero hoy son el mínimo absoluto que algunos receptores aceptan y otros ya empiezan a degradar. Migrar a 2048 bits es una tarea sencilla en teoría y delicada en la práctica, sobre todo porque un TXT de 2048 bits supera el límite de 255 caracteres por cadena de DNS y los paneles no siempre lo gestionan bien. Esta guía explica cuándo conviene migrar, cómo hacerlo sin parar envíos, y qué validar después.

Por qué seguir usando 1024 bits es un riesgo

RSA 1024 bits está computacionalmente al borde de lo razonable. Aunque todavía no es trivial romperlo, los grandes proveedores ya lo marcan como “weak” en señales internas. Resultados habituales de mantener 1024:

  • Algunos receptores aplican dkim=pass con anotación de clave débil; la firma valida pero no aporta el peso reputacional que aportaría 2048.
  • En auditorías de autenticación, 1024 aparece como hallazgo a corregir.
  • Si combinas 1024 con DMARC laxo, las señales que sumas son menores que las que un atacante podría replicar.

Migrar a 2048 elimina ese ruido y te alinea con la recomendación de RFC 8301, que pide al menos 2048 bits.

El obstáculo real: el TXT troceado

Un registro TXT en DNS está limitado a 255 caracteres por cadena. Una clave RSA 1024 cabe en una cadena. Una clave RSA 2048 no: ronda los 380-400 caracteres una vez codificada en Base64 dentro del valor del TXT.

DNS resuelve esto permitiendo varias cadenas en un mismo registro, concatenadas por el resolver:

selector._domainkey  IN  TXT  ( "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
                                "...primeraParteSeguida..."
                                "...resto..." )

Pero los paneles de DNS varían enormemente:

  • Algunos aceptan que pegues el valor completo y lo trocean automáticamente.
  • Otros requieren que tú metas las cadenas con comillas separadas.
  • Otros tienen un campo de texto único que admite el valor sin trocear y lo gestionan ellos.

Si lo metes mal, el resolver leerá un TXT cortado y la firma fallará silenciosamente.

Plan de migración

1. Genera la clave 2048 bits

En proveedores SaaS (Workspace, SES, Postmark, Brevo) basta con regenerar DKIM y elegir 2048. Si ya está en 2048 por defecto, te dan el TXT y listo.

En MTA propio (OpenDKIM):

openssl genrsa -out /etc/opendkim/keys/tudominio.com/s2026.private 2048
openssl rsa -in /etc/opendkim/keys/tudominio.com/s2026.private -pubout -outform PEM -out s2026.public

Convertir la pública en formato TXT (sin cabecera/pie y todo en una línea):

grep -v -e "BEGIN" -e "END" s2026.public | tr -d '\n'

Ese es el valor que va detrás de p=.

2. Usa un selector nuevo, no el mismo

Aprovecha la migración para introducir un selector con marca temporal (s2026a, mai2026, k2). Eso te permite tener 1024 y 2048 conviviendo sin tocar el TXT antiguo:

s1._domainkey       (1024 bits, antiguo, sigue activo)
s2026a._domainkey   (2048 bits, nuevo)

La rotación entre ellos sigue las reglas habituales que cubrimos en la guía de rotación de claves DKIM.

3. Publica el TXT troceado correctamente

Dependiendo del panel, hay tres patrones:

Panel que admite valor único largo (Cloudflare, Route 53, la mayoría modernos): pega el valor completo “v=DKIM1; k=rsa; p=AQUI_LA_CLAVE_LARGA” sin más. Internamente lo guardan partido en cadenas de hasta 255.

Panel que pide cadenas separadas con comillas: introdúcelas así literalmente:

"v=DKIM1; k=rsa; p=MIIBIjANBgkq...primera_parte"
"resto_de_la_clave..."

Sin espacios entre comillas y la siguiente cadena, salvo el necesario.

Panel limitado (algunos paneles antiguos): si tu panel cuenta caracteres y rechaza valores >255, hay que cambiar de panel o partir a mano usando la sintaxis BIND. Algunos proveedores te permiten editar la zona en formato BIND directamente.

4. Verifica con dig que el TXT se lee como una sola entidad

Comprueba primero la zona desde varios resolvers:

dig +short TXT s2026a._domainkey.tudominio.com
dig @1.1.1.1 +short TXT s2026a._domainkey.tudominio.com
dig @8.8.8.8 +short TXT s2026a._domainkey.tudominio.com

dig +short te devuelve las cadenas con comillas separadas; eso es normal y correcto. Lo importante es que al concatenarlas obtengas un valor completo que empieza por v=DKIM1; k=rsa; p= y termina sin truncarse.

Para validar la clave en sí, puedes ver el largo aproximado:

dig +short TXT s2026a._domainkey.tudominio.com | tr -d '"' | tr -d ' '

Si esperabas 2048 bits y la cadena es muy corta, algo se truncó.

5. Activa la firma con el nuevo selector

En el sistema de envío:

  • En MTA propio, modifica KeyTable y SigningTable de OpenDKIM para apuntar al nuevo selector y recarga.
  • En SaaS, marca el nuevo DKIM como activo o “primary”.

Envía un email de prueba a una cuenta tuya. En “Mostrar original” busca:

DKIM-Signature: v=1; a=rsa-sha256; d=tudominio.com; s=s2026a; ...
Authentication-Results: ...; dkim=pass header.d=tudominio.com header.s=s2026a

Si dkim=pass con el nuevo selector, la migración técnica está hecha.

6. Mantén el viejo en convivencia y luego retíralo

Como en cualquier rotación, deja el TXT de 1024 bits publicado mientras pueda haber mensajes firmados con él en cola o en relays. Pasados 7-30 días según volumen, retíralo.

Validación adicional

Email a tu propia cuenta y “Mostrar original”

Es la prueba definitiva. Si Gmail dice dkim=pass y la cabecera muestra el nuevo selector, la firma 2048 funciona.

Reportes DMARC RUA

Tras unos días, los reportes mostrarán pasadas DKIM contra el nuevo selector. Si ves fallos donde antes había éxitos, reabre el caso: probablemente el TXT está truncado en algún resolver.

Tester específico de DKIM

Hay herramientas externas que te muestran la clave pública decodificada y su tamaño. Útiles para confirmar que el TXT se reconstruye correctamente sin tener que firmar y validar tú mismo.

Errores frecuentes

TXT troceado mal con espacios o saltos de línea

Si entre las dos cadenas hay un espacio o el panel guarda mal las comillas, la concatenación produce basura. La firma falla intermitentemente porque algunos resolvers son más laxos que otros.

Cambiar la clave manteniendo el mismo selector

Si reutilizas default._domainkey y reemplazas el TXT viejo por uno nuevo, durante la propagación habrá receptores que aún tengan en caché el TXT viejo. Cualquier mensaje firmado en ese intervalo con la nueva privada fallará en esos receptores. La solución correcta es selector nuevo siempre, no reutilización.

Esperar 1024 sea aceptado como antes

Aunque hoy mayoritariamente lo es, algunos receptores empezarán a tratarlo como señal débil y a degradar la confianza. Si tu volumen es relevante, no te quedes ahí.

Olvidar que algunos proveedores firman con su propio selector

Si usas Mailchimp, Brevo o similar, el selector es del proveedor (k1._domainkey.tudominio.com apuntando a sus servidores). El tamaño de clave depende de ellos. Asegúrate de que su DKIM también es 2048 si quieres una pila homogénea.

TTL alto durante la migración

Como en toda rotación, baja TTL del TXT a 300-600 mientras dura la operación. Te ahorra horas si tienes que rectificar.

Casos particulares

Microsoft 365 / Exchange Online

Microsoft 365 todavía configura por defecto claves más cortas en algunos tenants. Comprueba en el centro de seguridad si los selectores que tienes activos están a 2048 y, si no, regenera.

Google Workspace

Workspace permite generar claves DKIM de 1024 o 2048 desde el panel. Selecciona 2048 y publica el TXT que te da. Más detalles en la guía de Google Workspace.

MTA propio en producción intensa

Si tu MTA firma cientos de miles de mensajes/día, el coste de CPU adicional al firmar 2048 vs 1024 es mínimo en máquinas modernas. No es excusa para no migrar.

Mantenimiento posterior

Una vez en 2048, anota la fecha y planifica la próxima rotación dentro de 12-24 meses según tu política. Aprovecha para revisar la pila completa: SPF, DKIM, DMARC alineado, reputación limpia, y, si aplica, BIMI con su VMC.

Recursos relacionados

Si quieres profundizar, prueba estas herramientas gratuitas: Domain Health, mail tester, validador SPF y validador DMARC.

¿Necesitas que alguien lleve tu canal de email entero? Abalola Mail es la agencia de email marketing especializada en ecommerce de Abalola para ecommerce: estrategia, producción y operación del stack sobre Klaviyo, Mailchimp o Brevo.

Preguntas frecuentes

¿Por qué migrar DKIM de 1024 a 2048 bits?
Porque 1024 bits está deprecado por seguridad y algunos receptores ya marcan dkim=fail para claves cortas. 2048 bits es el estándar actual y compatible con todos los proveedores.
¿Por qué un TXT de 2048 bits no entra en DNS?
Porque cada cadena TXT en DNS tiene un límite de 255 caracteres y la clave 2048 supera ese límite. Hay que dividirla en varias cadenas concatenadas dentro del mismo TXT.
¿Cómo evito un corte de firma durante la migración?
Publica la nueva clave bajo un selector nuevo (por ejemplo mail2026), espera a que propague y empieza a firmar con ella. Mantén la clave antigua publicada unos días para no invalidar mensajes en tránsito.
¿Cómo verifico que la nueva clave funciona?
Envía un email firmado con el nuevo selector y comprueba con dig +short TXT mail2026._domainkey.tudominio.com que el TXT está completo y que dkim=pass aparece en cabeceras del receptor.
¿Cuánto tiempo dejo activa la clave antigua?
Lo razonable es 7 a 14 días tras dejar de firmar con ella. Esto cubre mensajes en tránsito y receptores que reverifican firmas con cierto retraso.
¿Puedo tener varias claves activas a la vez?
Sí. Es exactamente lo que te permite una migración sin caídas. El receptor valida contra el selector que aparezca en cada mensaje.
¿La migración afecta a SPF o DMARC?
No. SPF y DMARC son independientes del tamaño de la clave DKIM. Lo único que cambia es el TXT del selector y la firma generada por el MTA.