Firma digital de documentos PDF

En este tutorial, se verá la implementación de firma digital en documentos PDF con firma desde una aplicación escrita en NodeJS. Para este propósito, es necesario realizar las siguientes acciones:

  • Generar el par de claves por software.- Se debe generar el par de claves en un archivo con el estándar PKCS#12, se recomienda usar la herramienta Certificado por Software.
  • Obtener un certificado por software.- Se debe solicitar un certificado por software a través de la página Solicitar certificado.
  • Instalar librería para manipulación de archivos pdf.- Los archivos PDF requieren de una herramienta para poder aceder a su contenido y registrar la firma una vez realizada. En este ejemplo se utilizará la librería pdfsig.

En el caso de los archivos PDF, se maneja el contenido por secciones, ya que si comparamos el documento original con el firmado, serán diferentes por el contenido de la firma. Sin embargo el contenido propiamente del documento no cambia.

Por lo anterior, el cálculo del HASH se realiza sobre el contenido del PDF como se explica en el siguiente enlace: PDF

Si no tiene instalado NodeJS, puede seguir los pasos descritos en el siguiente enlace: NodeJS

Una vez instalado, ejecutar las siguientes instrucciones para preparar el proyecto y editar el primer archivo del proyecto:

  1. mkdir firmar
  2. cd firmar
  3. npm init
  4. npm install pdfsig
  5. nano app.js

Con los pasos anteriores en la consola de comandos, se abrirá un editor de texto donde se puede copiar el siguiente programa:

  1. const pdfsig = require('pdfsig');
  2. const firmas = new pdfsig('prueba.pdf');
  3. console.log(firmas.firmar('prueba.p12', 'I234s678'));

La primera línea importa la librería pdfsig, la tercera recupera el pdf y la información inicial del documento. Una vez hecho esto ya se puede firmar, es así que la línea 5 recibe como parámetro del archivo p12 que contiene el par de claves y el certificado.

Para ejecutar el ejemplo anterior:

  1. node app.js

De acuerdo al ejemplo el archivo prueba.pdf será firmado con la clave privada y el certificado alojados en el archivo prueba.p12 y devolverá como resultado la ruta en la cual se guardó el archivo firmado.

Si desea descargar el ejemplo puede hacerlo a través del siguiente link: Código de ejemplo

© ADSIB 2019 Bolivia