🇨🇴ColombiaGuía Técnica

Firma digital XAdES-BES en nómina electrónica Colombia: certificados, renovación y errores frecuentes

Guía técnica de la firma digital XAdES-BES en nómina electrónica Colombia: entidades certificadoras, proceso de obtención, renovación y errores de firma más frecuentes.

Ing. Carlos Méndez
Arquitecto de Software · Integraciones Fiscales LATAM
8 min lectura2 de septiembre de 2026

Por Ing. Carlos Méndez | 2 de septiembre de 2026

Ing. Carlos Méndez es arquitecto de software con más de 10 años integrando sistemas fiscales en América Latina. Ha liderado implementaciones de facturación electrónica en Colombia, México y Centroamérica para ISVs de mediana y gran escala.

El sistema de nómina genera el XML correctamente. El CUNE cuadra. El envío al OASF regresa un código de error de firma. El certificado fue instalado hace tres meses. ¿El problema es el algoritmo de canonicalización? ¿El orden de los nodos firmados? ¿El tipo de transformación aplicada? La firma digital en documentos fiscales es el punto de fallo más oscuro de la integración y sus errores son los más difíciles de diagnosticar sin conocer el estándar.

Esta guía cubre la firma digital en nómina electrónica Colombia desde el ángulo técnico del integrador: qué estipula el estándar XAdES-BES, cómo obtener un certificado válido, qué entidades están acreditadas, cómo es el proceso de renovación y cuáles son los errores de firma más frecuentes con su diagnóstico.

¿Por qué nómina electrónica requiere firma digital?

La Resolución DIAN 0013 de 2021 exige que cada documento de nómina electrónica (NIDD y NANE) sea firmado digitalmente por el empleador antes de transmitirse al OASF. La firma cumple tres funciones: autenticación (prueba que el documento fue generado por quien dice haberlo generado), integridad (prueba que el contenido no fue alterado después de la firma) y no repudio (el emisor no puede negar haber generado el documento). La DIAN valida la firma como parte de la cadena de validación del documento. Un documento sin firma válida es rechazado antes de que se evalúen cualquier otro campo.

Para el ISV, esto implica que la lógica de firma debe implementarse en el software, no puede delegarse al usuario. El proceso es: generar el XML con todos los campos correctos, aplicar la firma digital XAdES-BES usando el certificado del empleador, y solo entonces enviar al OASF. El OASF generalmente no firma — transmite el documento firmado por el empleador.

Estándar XAdES-BES: qué firma y cómo lo hace

XAdES-BES (XML Advanced Electronic Signatures, nivel Basic Electronic Signature) es el perfil mínimo del estándar XAdES, definido por ETSI. Es el mismo estándar usado en la factura electrónica colombiana, por lo que equipos que ya lo implementaron para facturar pueden reutilizar la biblioteca, pero deben verificar que la configuración de canonicalización y los nodos firmados correspondan al XSD de nómina, que difiere del de factura.

El proceso de firma XAdES-BES sobre el XML de nómina implica: (1) canonicalizar el documento XML usando el algoritmo Canonical XML 1.0, (2) calcular el digest SHA-256 del documento canonicalizado, (3) cifrar el digest con la clave privada del certificado usando RSA-SHA256, (4) insertar el bloque de firma dentro del XML como un elemento ds:Signature con los campos SignedInfo, SignatureValue, KeyInfo y las propiedades XAdES (SignedProperties con el certificado incluido).

xml
xades-bes-estructura-firma.xml
<!-- Estructura del bloque de firma XAdES-BES en la NIDD -->
<ds:Signature Id="xmldsig-CUNE-valor-aqui">
  <ds:SignedInfo>
    <ds:CanonicalizationMethod
      Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:SignatureMethod
      Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <ds:Reference URI="">
      <ds:Transforms>
        <ds:Transform
          Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      </ds:Transforms>
      <ds:DigestMethod
        Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
      <ds:DigestValue>BASE64_DIGEST_AQUI</ds:DigestValue>
    </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue>BASE64_FIRMA_AQUI</ds:SignatureValue>
  <ds:KeyInfo>
    <ds:X509Data>
      <ds:X509Certificate>BASE64_CERTIFICADO_DER</ds:X509Certificate>
    </ds:X509Data>
  </ds:KeyInfo>
  <!-- Propiedades XAdES obligatorias -->
  <xades:Object>
    <xades:QualifyingProperties>
      <xades:SignedProperties Id="xades-signedprops">
        <xades:SignedSignatureProperties>
          <xades:SigningTime>2026-09-02T10:00:00Z</xades:SigningTime>
          <xades:SigningCertificate>
            <xades:Cert>
              <xades:CertDigest>
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <ds:DigestValue>DIGEST_CERT_AQUI</ds:DigestValue>
              </xades:CertDigest>
            </xades:Cert>
          </xades:SigningCertificate>
        </xades:SignedSignatureProperties>
      </xades:SignedProperties>
    </xades:QualifyingProperties>
  </xades:Object>
</ds:Signature>

Entidades certificadoras acreditadas en Colombia

El certificado digital para nómina electrónica debe ser emitido por una entidad de certificación acreditada ante la Superintendencia de Industria y Comercio (SIC) de Colombia. Las entidades acreditadas incluyen: Certicámara, GSE (antes GTE), Éntrust y otras que la SIC haya habilitado a la fecha. El certificado debe ser un certificado de firma digital, no un certificado SSL. La acreditación de la entidad emisora es verificada por la DIAN durante la validación — un certificado de una CA no acreditada es rechazado independientemente de la validez técnica de la firma.

El certificado se emite a nombre del empleador (persona jurídica o natural). El NIT del empleador debe estar registrado en el campo de sujeto del certificado de una forma que coincida con el NIT declarado en el XML de la NIDD. Una discrepancia entre el NIT en el certificado y el NIT en el XML genera rechazo por firma inválida.

Proceso de obtención e instalación del certificado

El proceso varía por entidad certificadora pero sigue un patrón común: (1) el empleador o su representante legal inicia la solicitud en la CA, presentando el RUT y los documentos de la empresa; (2) la CA verifica la identidad del solicitante (presencialmente o mediante videollamada con validación de identidad); (3) la CA emite el certificado en formato PKCS#12 (.p12 o .pfx), protegido con una contraseña que el ISV debe gestionar de forma segura; (4) el ISV carga el certificado en el sistema de nómina.

Seguridad crítica: la clave privada del certificado del empleador no debe almacenarse en texto plano ni en variables de entorno sin cifrado. Usar un almacén de claves cifrado (Java KeyStore, AWS KMS, HashiCorp Vault) para gestionar los certificados de todos los clientes. Una clave privada comprometida permite firmar documentos fiscales a nombre del empleador.

Renovación del certificado: plazos y proceso

Los certificados de firma digital en Colombia tienen una vigencia de 1 a 3 años, dependiendo del tipo contratado. La fecha de vencimiento está en el campo NotAfter del certificado X.509. Un certificado vencido produce rechazo inmediato: la DIAN verifica la fecha de vencimiento del certificado contra la fecha del campo SigningTime en la firma XAdES. Si NotAfter < SigningTime, la firma es inválida.

La práctica recomendada para ISVs que gestionan certificados de múltiples clientes es implementar un sistema de alerta de vencimiento: verificar el NotAfter de cada certificado activo y notificar al cliente con al menos 60 días de anticipación. La renovación requiere que el cliente repita el proceso de verificación de identidad con la CA — no es automática. Si el certificado vence en plena liquidación de nómina, todos los envíos del período son rechazados.

Errores de firma más frecuentes en nómina electrónica DIAN

Los errores de firma son los más difíciles de diagnosticar porque el mensaje de error de la DIAN es genérico ('firma inválida') sin indicar la causa específica. Los escenarios más comunes:

Modificación del XML después de firmar: cualquier cambio en el XML posterior a la firma invalida el digest. Es común en sistemas que reformatean el XML (agregan espacios o saltos de línea) entre la firma y el envío al OASF.

Canonicalización incorrecta: usar Canonical XML 1.1 en lugar de 1.0 (o Exclusive Canonical XML en lugar de Inclusive) produce un digest diferente al que la DIAN espera. El algoritmo de canonicalización debe ser http://www.w3.org/TR/2001/REC-xml-c14n-20010315.

Certificado en formato incorrecto en el XML: el campo X509Certificate debe contener el certificado en formato DER codificado en base64, sin las líneas '-----BEGIN CERTIFICATE-----'. Incluir el PEM completo genera error de parseo de la firma.

Zona horaria incorrecta en SigningTime: el campo SigningTime debe estar en UTC (sufijo Z). Si el sistema usa hora local de Colombia (UTC-5) sin conversión, el SigningTime puede quedar en el futuro según la DIAN, generando rechazo.

Preguntas frecuentes sobre firma digital en nómina electrónica

¿Cuál es la diferencia entre la firma XAdES-BES de nómina y la de factura electrónica Colombia?

El estándar XAdES-BES es el mismo en ambos sistemas. La diferencia está en el contexto del documento firmado: en factura electrónica el elemento raiz es la factura UBL; en nómina es el NominaIndividual. El bloque de firma se inserta en el mismo nodo raíz pero las referencias internas apuntan a la estructura del documento de nómina. Las bibliotecas que ya implementan la firma para factura pueden reutilizarse, pero la configuración de referencias debe adaptarse.

¿Cómo puedo verificar si un certificado es válido antes de usarlo?

Verificar tres condiciones: (1) el campo NotAfter del certificado es posterior a la fecha actual, (2) el NIT del empleador está en el campo Subject del certificado en el formato que la DIAN espera, (3) la CA emisora está acreditada por la SIC. El sandbox del OASF permite probar la firma antes de producir en producción. Si el sandbox acepta el documento, la firma es válida.

¿Qué diferencia hay entre un certificado de firma digital y un certificado SSL?

Son certificados X.509 pero con Key Usage diferente. Un certificado SSL tiene Key Usage: Digital Signature + Key Encipherment y Extended Key Usage: TLS Web Server Authentication. Un certificado de firma digital para documentos fiscales tiene Key Usage: Digital Signature + Non Repudiation. La DIAN verifica el Key Usage del certificado al validar la firma de los documentos de nómina. Un certificado SSL usado para firmar documentos es rechazado aunque sea de una CA acreditada.

¿Es posible firmar múltiples NIDD con el mismo certificado en un proceso por lotes?

Sí. El certificado no tiene límite de usos mientras esté vigente. El proceso de firma por lotes carga el PKCS#12 una vez, desbloquea la clave privada con la contraseña, y usa la instancia para firmar cada NIDD secuencialmente. El SigningTime de cada firma debe ser el tiempo real de generación (idealmente con segundos únicos por documento). No existe problema en firmar cientos de NIDD en el mismo proceso siempre que el certificado esté vigente.

Sobre el autor

Ing. Carlos Méndez es arquitecto de software con más de 10 años integrando sistemas fiscales en América Latina. Ha liderado implementaciones de facturación electrónica en Colombia, México y Centroamérica para ISVs de mediana y gran escala.