Saltar a contenido

Certificados en Business Central

Los objetos AL que incorporas a tu extensión usan el almacén estándar de Business Central. Antes de configurar, sigue la integración manual y copia el codeunit con sus objetos auxiliares. La clave privada permanece en BC; el servicio recibe únicamente el certificado público y la firma criptográfica de cada operación.

Los emisores se resuelven en la API; no es necesario añadirlos a las llamadas ni cargarlos en BC para usar esta función. UANATACA CA1 2021 y ROOT 2016 están incluidos en la imagen API desde 0.2.14. Actualiza la API y conserva el certificado firmante y su alias en BC. Esto no instala confianza en el lector ni cambia el perfil B-B; consulta los avisos del lector.

Importar un certificado

  1. Un administrador con permisos BC para administrar certificados abre la página estándar Certificates (busque “Certificates” con Tell Me) y elige Upload Certificate.
  2. Selecciona el archivo PFX/P12 e introduce su contraseña en el diálogo estándar de BC. No copie el archivo ni la contraseña a una tabla propia, al repositorio, al contenedor del servicio o a los logs.
  3. Elige el ámbito de uso. Para limitarlo a una persona dentro de una empresa, seleccione Company and User y, si fuera necesario, usa la acción estándar Change User para asignar el certificado al usuario previsto. Use Company solo si la política permite que los usuarios autorizados de esa empresa compartan el certificado; User lo vincula al usuario para las empresas que permita BC.
  4. Comprueba que el certificado importado está vigente, corresponde al titular esperado y tiene clave privada. La clave debe ser RSA de 2048 bits o más y permitir firma.

BC genera el Code interno del registro Isolated Certificate; no es un alias de negocio estable y no debe editarse ni exponerse a quien consume la función. Al volver a importar una renovación se puede generar otro código.

Crear alias para usuarios

La tabla AL que copiaste guarda una asignación independiente por empresa entre User Security ID + Alias y el código interno de Isolated Certificate. Así, una misma persona puede tener varios alias y cada alias puede apuntar al certificado correcto.

  1. Asigna al administrador el permission set BC PDF SIGN ADMIN además de sus permisos estándar de BC para administrar usuarios y certificados.
  2. Busca PDF Signing Setup y abre Certificate Aliases.
  3. Crea una fila por alias. El identificador de usuario se precarga con el usuario actual; el administrador puede elegir otro usuario. Usa letras, números, punto, guion o guion bajo, por ejemplo HOTEL-MADRID o FACTURAS_2026.
  4. Selecciona en Certificate Code el código que BC creó al importar el certificado y deja Enabled activado.
  5. Para que una persona use varios certificados, crea una fila por cada alias. Desactiva o elimina la fila para retirar el acceso.

La función vuelve a comprobar el alias para el usuario de BC que la invoca, el estado habilitado, la clave privada y la fecha de expiración. Concede BC PDF SIGN USER a los usuarios o extensiones que llamen a FirmarPdf.

Configurar la conexión con el servicio

En PDF Signing Setup, registra el origen HTTPS de la API (por ejemplo https://api.example.com) y el timeout. Pulsa Save Token para guardar el mismo valor configurado como BC_BEARER_TOKEN en el backend, sin el prefijo Bearer; el formulario no vuelve a mostrarlo. El helper de tu extensión lo guarda cifrado en Isolated Storage con ámbito de empresa, no en la tabla de configuración.

En la administración de la extensión, habilita las solicitudes HTTP salientes para tu extensión, donde pegaste los objetos y comprueba que la URL es accesible desde Business Central. El usuario que firma debe tener acceso al alias asignado y a la tabla estándar de certificados.

Rotación y diagnóstico

Importa la renovación como un certificado nuevo, comprueba su titular, vigencia y huella, y cambia la asignación del alias cuando corresponda. Una operación iniciada queda ligada a la huella con la que se preparó; no reintentes el mismo OperationId después de cambiar el certificado asignado.

Si la API rechaza el certificado, revisa vigencia, RSA, uso de clave y huella. Si devuelve SIGNATURE_INVALID, la firma debe haberse calculado sobre los bytes binarios exactos que devolvió prepare, no sobre el texto Base64 ni sobre el PDF.

Referencias de Microsoft: Isolated Certificate, Certificate Management, Cryptography Management, SecretText e Isolated Storage.