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:40] – [Firma visible en el documento] 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 25: Línea 25:
  
 <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 61: Línea 61:
  
 <code bash> <code bash>
-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>+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
 </code> </code>
  
  
-Script de bash: 
  
-<code bash> +==== Firma visible en el documento ====
-#!/bin/bash +
-+
-# 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 +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 "testigode la firma, pero lo importante no es eso si no los metadatos.
-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 ####################################################################################### +Con la versión con interfaz gráfica es sencillo, pero para hacerlo desde línea de comandos hay que trabajarlo un poco.
-NIF="B47455891"                                 # NIF +
-DIR='/home/usuario/Documentos/Empresa'          # Ruta al dir. de trabajo +
-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 +Si queremos que aparezca un texto con el nombre de la persona que firma el documento y la fecha:
-AUTOFIRMA="/usr/lib/AutoFirma/AutoFirma.jar"    # Ruta al AutoFirma.jar+
  
-# Personalizacion de la salida +<code bash> 
-FORMAT="pades"                                  # Formato para firma de pdf+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\ 
 +signaturePositionOnPageLowerLeftY=130\n\ 
 +signaturePositionOnPageUpperRightX=250\n\ 
 +signaturePositionOnPageUpperRightY=245\n\ 
 +signaturePage=1\n\ 
 +layer2FontColor=black\n\ 
 +layer2FontSize=8\n\ 
 +layer2FontFamily=1\n\ 
 +layer2FontStyle=0" 
 +</code>
  
-# Posición de la firma visible +Si queremos firmar con una imagen (como una firma manuscrita):
-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 +<code bash> 
-l2FontColor='black'                             # Color de letra +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\ 
-l2FontSize='7'                                  # Tamaño de letra +signaturePositionOnPageLowerLeftX=50\n\ 
-l2FontFamily='1'                                # Familia de fuente +signaturePositionOnPageLowerLeftY=130\n\ 
-l2FontStyle='0'                                 # Estilo de Fuente +signaturePositionOnPageUpperRightX=250\n\ 
- +signaturePositionOnPageUpperRightY=245\n\ 
-# Página +signaturePage=1"
-signaturaPage='1'                               # Página donde firmaremos -1=última +
- +
-# Rúbrica imagen a añadir, opcional +
-# Se crea con el comandobase64 -w 0 <archivoy se copian los datos en base64 en la siguiente variable +
-#signatureRubricImage='... datos en base64 ...' +
-# Otra forma: llamar 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 +
-# Estos son campos que AutoFirma rellenerá +
-# $$SUBJECTCN$$ Nombre común (CN, Common Name) del titular del certificado de firma +
-# $$ISSUERCN$$ Nombre común (CN, Common Name) del emisor del certificado de firma +
-# $$CERTSERIAL$$ Número de serie del certificado de firma +
-# $$SIGNDATE=PATRÓN$$ Fecha de la firma +
-# $$GIVENNAME$$ Nombre del titular (G, Given Name) (podría estar vacío) +
-# $$SURNAME$$ Apellidos del titular (SN, Surname) (podría estar vacío) +
-# $$ORGANIZATION$$ Organización (O, Organization) (podría estar vacío) +
-# $$REASON$$ Razón por la que se firma el PDF. (podría estar vacío) +
-# $$LOCATION$$ Ciudad en la que se firma el PDF. (podría estar vacío) +
-# $$CONTACT$$ Información de contacto del firmante del PDF. (podría estar vacío) +
- +
-# Formato del campo de la fecha: +
-# 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 +
-# Este es un texto libre, pero debe entrecomillarse con comillas simples, ya que contiene caracteres '$' +
-LAYER2TEXT='En '$LOCATION', el $$SIGNDATE='$FECHA'$$ +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
-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 maneras. Aquí 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> </code>
  
-==== Firma visible en el documento ==== +<WRAP center round info 60%> 
- +La imagen debe ser en formato JPEGTambién puede indicarse directamente el Base 64 de la imagen. Para elloejecutamos el comando ''base64 -w 0 <archivo.jpg>'' 
-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áginasEs cierto que Autofirma permite hacer visible en el PDF un "testigo" de la firmapero lo importante no es eso si no los metadatos.+</WRAP>
  
-===== Verificar firma =====+===== Validar / verificar firma =====
  
   * [[https://valide.redsara.es/valide/validarFirma/ejecutar.html|Validar firma digital]]   * [[https://valide.redsara.es/valide/validarFirma/ejecutar.html|Validar firma digital]]
Línea 233: Línea 107:
  
   * [[https://github.com/ctt-gob-es/clienteafirma/issues/20|Firmar desde linea de comandos]]   * [[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]]
informatica/software/autofirma.1745052036.txt.gz · Última modificación: por tempwin