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 12:00] – [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> 
-#!/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 
-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 ####################################################################################### 
-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 
-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 
-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 
-l2FontColor='black'                             # Color de letra 
-l2FontSize='7'                                  # Tamaño de letra 
-l2FontFamily='1'                                # Familia de fuente 
-l2FontStyle='0'                                 # Estilo de Fuente 
- 
-# Página 
-signaturaPage='1'                               # Página donde firmaremos -1=última 
- 
-# Rúbrica o imagen a añadir, opcional 
-# Se crea con el comando: base64 -w 0 <archivo> y 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> 
  
 ==== Firma visible en el documento ==== ==== Firma visible en el documento ====
Línea 232: Línea 75:
  
 <code bash> <code bash>
-autofirma sign -i manual-deshumidificador-pb-d-23.pdf -o manual-deshumidificador-pb-d-23_signed.pdf -store pkcs12:certificado-digital-password-jm-NUEVO.p12 -alias rodriguez_cuadrado_jose_manuel___47366047p -password 5eteIFwH -config "signatureRubricImage=/home/tempwin/docs/firma_ejemplo.jpg\nsignaturePositionOnPageLowerLeftX=50\nsignaturePositionOnPageLowerLeftY=130\nsignaturePositionOnPageUpperRightX=250\nsignaturePositionOnPageUpperRightY=245\nsignaturePage=1\nlayer2FontSize=8\nlayer2FontFamily=1"+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> </code>
 +
 +Si queremos firmar con una imagen (como una firma manuscrita):
 +
 +<code bash>
 +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\
 +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 ===== ===== Validar / verificar firma =====
  
Línea 240: 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.1745056839.txt.gz · Última modificación: por tempwin