Herramientas de usuario

Herramientas del sitio


informatica:software:autofirma

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:software:autofirma [2025/04/19 10:14] tempwininformatica:software:autofirma [2025/04/19 14:22] (actual) – [Recursos] tempwin
Línea 1: Línea 1:
 ====== AutoFirma ====== ====== AutoFirma ======
  
-Aplicación de [[life:documentacion:firma_electronica|firma electrónica]] desarrollada por el Ministerio de Asuntos Económicos y Transformación Digital de España. Al poder ser ejecutada desde el navegador, permite la firma en páginas de Administración Electrónica cuando se requiere la firma en un procedimiento administrativo. También se puede usar desde como aplicación independiente. +Aplicación de [[life:documentacion:firma_electronica|firma electrónica]] desarrollada por el Ministerio de Asuntos Económicos y Transformación Digital de España. Al poder ser ejecutada desde el navegador, permite la firma en páginas de Administración Electrónica cuando se requiere la firma en un procedimiento administrativo. También se puede usar como aplicación independiente. 
  
 Con el programa AutoFirma puedes firmar documentos PDF, Word, Excel o PowerPoint mediante [[life:documentacion:certificado_digital|certificado digital]].  Con el programa AutoFirma puedes firmar documentos PDF, Word, Excel o PowerPoint mediante [[life:documentacion:certificado_digital|certificado digital]]. 
Línea 20: Línea 20:
 ===== Uso ===== ===== Uso =====
  
-==== Firma en línea de comandos ====+===== Firma en línea de comandos =====
  
 Probado para la versión 1.8.3 bajo Arch Linux: Probado para la versión 1.8.3 bajo Arch Linux:
  
 <code bash> <code bash>
-autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ruta/a/certificado_digital.p12 -filter subject.contains:<IDENTIFICADOR> -password <CONTRASEÑA_CERTIFICADO>+autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ruta/a/certificado_digital.p12 -filter subject.contains:<IDENTIFICADOR> -password <CONTRASEÑA_CERTIFICADO> -format pades
 </code> </code>
  
Línea 37: Línea 37:
  
 <code bash> <code bash>
-autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ruta/a/certificado_digital.p12 -filter subject.contains:12345678Z -password <CONTRASEÑA_CERTIFICADO>+autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ruta/a/certificado_digital.p12 -filter subject.contains:12345678Z -password <CONTRASEÑA_CERTIFICADO> -format pades
 </code> </code>
  
Línea 50: Línea 50:
 <code> <code>
 Nombre de Alias: rodriguez_perez_manuel___12345678z Nombre de Alias: rodriguez_perez_manuel___12345678z
- 
 </code> </code>
  
-Script de bash:+Otra forma de encontrar el lias es pasándole la opción ''listaliases'' a ''autofirma'':
  
 <code bash> <code bash>
-#!/bin/bash +autofirma listaliases -store pkcs12:certificado-digital.p12 
-+</code>
-# Script para firmar documentos usando AutoFirma +
-+
-# Joaquín Ferrero. 2022.11.08 +
-# Joaquín Ferrero. 2021.03.06 +
-+
-# Ejecutar: +
-#   Pasar el documento PDF a firmar como parámetro+
-#   El resultado es otro documento con una coletilla en el nombre. +
-+
-#    ~/bin/firma_generica.sh Factura_EMPRESA_2022_0534117.pdf +
-+
-# Personalización básica: +
-# * NIF +
-# * Nombre del archivo .p12 con la firma digital. +
-# * Contraseña para acceder a ese archivo. +
-# * Posición de la firma en la página. +
-#       Se usa el truco de hacerlo primero con AutoFirma y luego +
-#       ver qué valores utiliza mirando el final del archivo AUTOFIRMA.afirma.log.xml. +
-# * Imagen de una firma digitalizada. Opcional. +
-#       El mismo truco que el anterior. +
-# * ERROR: No funciona la plantilla $$LOCATION$$, así que está puesto de forma directa. +
-# * Como no me gustaba el texto por defecto de $$ISSUERCN$$, también lo he puesto directamente. +
-#+
  
-# Leemos el nombre del archivo pdf pasado por línea de comandos +Si conocemos el alias del certificado que queremos usar, en lugar de la opción ''-filter'' podemos usar la opción ''-alias'':
-ARCHIVO=$1 +
-# Creamos el nombre del archivo resultado +
-ARCHIVOFIRMADO="${ARCHIVO/%.pdf/_firmado.pdf}" +
-#ARCHIVOFIRMADO="${ARCHIVO%.pdf}_firmado.pdf"    # método alternativo por si falla el anterior+
  
-### Personalización ####################################################################################### +<code bash> 
-NIF="B47455891"                                 # NIF +autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ruta/a/certificado_digital.p12 -alias rodriguez_perez_manuel___12345678z -password <CONTRASEÑA_CERTIFICADO> -format pades 
-DIR='/home/usuario/Documentos/Empresa'          # Ruta al dirde trabajo +</code>
-STORE="pkcs12:$DIR/Hacienda/$NIF.p12          # Ruta al almacén del certificado digital P12 +
-PASSWORD="CONTRASEÑA"                           # Contraseña del archivo de la firma digital +
-LOCATION="Valladolid"                           # Lugar donde se firma +
-ISSUERCN="FNMT-RCM"                             # Emisor del certificado+
  
-JAVADIR="/usr/lib/java/jdk-11.0.2/bin"          # Ruta al motor Java, si fuera necesario 
-AUTOFIRMA="/usr/lib/AutoFirma/AutoFirma.jar"    # Ruta al AutoFirma.jar 
  
-# Personalizacion de la salida 
-FORMAT="pades"                                  # Formato para firma de pdf 
  
-# Posición de la firma visible +==== Firma visible en el documento ====
-PositionOnPageLowerLeftX='350'                  # Coordenada X Abajo Izquierda +
-PositionOnPageLowerLeftY='85'                   # Coordenada Y Abajo Izquierda +
-PositionOnPageUpperRightX='550'                 # Coordenada X Arriba Derecha +
-PositionOnPageUpperRightY='195'                 # Coordenada Y Arriba Derecha+
  
-# Fuente de letras +Con la firma digital se firma el fichero completo y se **añade la firma en los metadatos** por lo que no es necesario lo de firmar todas las páginas. Es cierto que Autofirma permite hacer visible en el PDF un "testigo" de la firma, pero lo importante no es eso si no los metadatos.
-l2FontColor='black'                             # Color de letra +
-l2FontSize='7'                                  # Tamaño de letra +
-l2FontFamily='1'                                # Familia de fuente +
-l2FontStyle='0'                                 # Estilo de Fuente+
  
-# Página +Con la versión con interfaz gráfica es sencillo, pero para hacerlo desde línea de comandos hay que trabajarlo un poco.
-signaturaPage='1'                               # Página donde firmaremos -1=última+
  
-# Rúbrica o imagen a añadir, opcional +Si queremos que aparezca un texto con el nombre de la persona que firma el documento y la fecha:
-# Se crea con el comando: base64 -w 0 <archivo> se copian los datos en base64 en la siguiente variable +
-#signatureRubricImage='... datos en base64 ...' +
-# Otra formallamar al comando base64 directamente, en todas las ocasiones +
-signatureRubricImage=$(base64 -w 0 ~/Documentos/Empresa/Firmas/FIRMA_DEL_TESORERO.jpg)+
  
-# Personalización de la firma visible en el documento +<code bash> 
-# Estos son campos que AutoFirma rellenerá +autofirma sign -i documento.pdf -o documento_signed.pdf -store pkcs12:certificado-digital.p12 -alias rodriguez_perez_manuel___12345678z -password <CONTRASEÑA> -format pades -config "signaturePositionOnPageLowerLeftX=50\n\ 
-# $$SUBJECTCN$$ Nombre común (CN, Common Name) del titular del certificado de firma +signaturePositionOnPageLowerLeftY=130\n\ 
-# $$ISSUERCN$$ Nombre común (CN, Common Name) del emisor del certificado de firma +signaturePositionOnPageUpperRightX=250\n\ 
-# $$CERTSERIAL$$ Número de serie del certificado de firma +signaturePositionOnPageUpperRightY=245\n\ 
-# $$SIGNDATE=PATRÓN$$ Fecha de la firma +signaturePage=1\n\ 
-# $$GIVENNAME$$ Nombre del titular (G, Given Name) (podría estar vacío) +layer2FontColor=black\n\ 
-# $$SURNAME$$ Apellidos del titular (SN, Surname) (podría estar vacío) +layer2FontSize=8\n\ 
-# $$ORGANIZATION$$ Organización (O, Organization) (podría estar vacío) +layer2FontFamily=1\n\ 
-# $$REASON$$ Razón por la que se firma el PDF. (podría estar vacío) +layer2FontStyle=0" 
-# $$LOCATION$$ Ciudad en la que se firma el PDF. (podría estar vacío) +</code>
-# $$CONTACT$$ Información de contacto del firmante del PDF. (podría estar vacío)+
  
-# Formato del campo de la fecha: +Si queremos firmar con una imagen (como una firma manuscrita):
-# https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html +
-#FECHA="EEEE d 'de' MMMM 'de' yyyy, HH:mm:ss" +
-FECHA="d 'de' MMMM 'de' yyyy, HH:mm:ss"+
  
-# Texto que queremos que aparezca en la firma +<code bash> 
-# Este es un texto libre, pero debe entrecomillarse con comillas simples, ya que contiene caracteres '$' +autofirma sign -i documento.pdf -o documento_signed.pdf -store pkcs12:certificado-digital.p12 -alias rodriguez_perez_manuel___12345678z -password <CONTRASEÑA> -format pades -config "signatureRubricImage=/home/tempwin/docs/firma_ejemplo.jpg\n\ 
-LAYER2TEXT='En '$LOCATION', el $$SIGNDATE='$FECHA'$$+signaturePositionOnPageLowerLeftX=50\n\ 
 +signaturePositionOnPageLowerLeftY=130\n\ 
 +signaturePositionOnPageUpperRightX=250\n\ 
 +signaturePositionOnPageUpperRightY=245\n\ 
 +signaturePage=1" 
 +</code>
  
 +<WRAP center round info 60%>
 +La imagen debe ser en formato JPEG. También puede indicarse directamente el Base 64 de la imagen. Para ello, ejecutamos el comando ''base64 -w 0 <archivo.jpg>''
 +</WRAP>
  
 +===== Validar / verificar firma =====
  
 +  * [[https://valide.redsara.es/valide/validarFirma/ejecutar.html|Validar firma digital]]
 +===== Recursos =====
  
- +  * [[https://github.com/ctt-gob-es/clienteafirma/issues/20|Firmar desde linea de comandos]] 
- +  * [[https://github.com/ctt-gob-es/clienteafirma/wiki/Par%C3%A1metros-de-configuraci%C3%B3n-de-los-formatos-de-firma|Parámetros de configuración de los formatos de firma]] 
- +  * [[https://informaticadantesca.blogspot.com/2019/07/autofirma-ubuntu-1804-y-otros-problemas.html|Autofirma (II), Ubuntu 18.04. Guia definitiva. Perdida de certificados. Ejecución en consola de Autofirma. Diferentes resultados de firma. Cades implicit. PKCS#11]] 
- +  * [[https://alvarogonzalezsotillo.github.io/blog/autofirma-facil/|Autofirma fácil en Windows usando la línea de comando y la carpeta send to]] 
- +  * [[https://github.com/ctt-gob-es/clienteafirma/issues/281#issuecomment-1249312593|Firma Visible desde línea de comandos WINDOWS #281]]
- +
- +
-Firma digital de $$GIVENNAME$$ $$SURNAME$$ +
-          Certificado emitido por '$ISSUERCN' para +
-$$ORGANIZATION$$' +
- +
-# Configuración que espera AutoFirma +
-CONFIG="layer2Text=$LAYER2TEXT\n\ +
-    signaturePositionOnPageLowerLeftX=$PositionOnPageLowerLeftX\n\ +
-    signaturePositionOnPageLowerLeftY=$PositionOnPageLowerLeftY\n\ +
-    signaturePositionOnPageUpperRightX=$PositionOnPageUpperRightX\n\ +
-    signaturePositionOnPageUpperRightY=$PositionOnPageUpperRightY\n\ +
-    layer2FontColor=$l2FontColor\n\ +
-    layer2FontSize=$l2FontSize\n\ +
-    layer2FontFamily=$l2FontFamily\n\ +
-    layer2FontStyle=$l2FontStyle\n\ +
-    signatureRubricImage=$signatureRubricImage\n\ +
-    signaturePage=$signaturaPage" +
- +
-### Fin de la personalización ############################################################################# +
- +
-# Aquí se hace la firma +
-# Se puede hacer de varias manerasAquí hay dos que he encontrado. +
-# Escoger aquella que mejor se ajuste al contenido del almacén, y comentar las líneas de la otra solución. +
- +
-# 1º, con -filter, poner algo que esté dentro del certificado, por ejemplo, el NIF +
- +
-$JAVADIR/java -jar $AUTOFIRMA sign      \ +
-    -i "$ARCHIVO"                       \ +
-    -o "$ARCHIVOFIRMADO"                \ +
-    -store $STORE                       \ +
-    -format $FORMAT                     \ +
-    -password $PASSWORD                 \ +
-    -filter subject.contains:$NIF       \ +
-    -config "$CONFIG" +
- +
-echo "" +
-exit +
- +
-# 2º, con -alias, para encontrar el certificado dentro del almacén .p12 +
-# primero llamamos a AutoFirma para pedir los alias de un determinado almacén +
-ALIASES=$($JAVADIR/java -jar $AUTOFIRMA listaliases -store $STORE -password $PASSWORD) +
- +
-$JAVADIR/java -jar $AUTOFIRMA sign      \ +
-    -i "$ARCHIVO"                       \ +
-    -o "$ARCHIVOFIRMADO"                \ +
-    -store $STORE                       \ +
-    -format $FORMAT                     \ +
-    -password $PASSWORD                 \ +
-    -alias "$ALIASES"                   \ +
-    -config "$CONFIG" +
- +
-echo "" +
-exit +
- +
-FIN de firma.sh +
-</code>+
informatica/software/autofirma.1745050446.txt.gz · Última modificación: por tempwin