informatica:software:autofirma
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:software:autofirma [2025/04/19 10:31] – [Firma en línea de comandos] tempwin | informatica:software:autofirma [2025/04/19 14:22] (actual) – [Recursos] tempwin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== AutoFirma ====== | ====== AutoFirma ====== | ||
| - | Aplicación de [[life: | + | Aplicación de [[life: |
| Con el programa AutoFirma puedes firmar documentos PDF, Word, Excel o PowerPoint mediante [[life: | Con el programa AutoFirma puedes firmar documentos PDF, Word, Excel o PowerPoint mediante [[life: | ||
| 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:/ | + | autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ |
| </ | </ | ||
| Línea 37: | Línea 37: | ||
| <code bash> | <code bash> | ||
| - | autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ | + | autofirma sign -i documento.pdf -o documento_firmado.pdf -store pkcs12:/ |
| </ | </ | ||
| Línea 52: | Línea 52: | ||
| </ | </ | ||
| - | Si conocemos | + | Otra forma de encontrar |
| <code bash> | <code bash> | ||
| - | autofirma | + | autofirma |
| </ | </ | ||
| - | + | Si conocemos el alias del certificado que queremos usar, en lugar de la opción '' | |
| - | Script | + | |
| <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 < |
| - | # | + | </ |
| - | # 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 | + | |
| - | # * 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$$, | + | |
| - | # * Como no me gustaba el texto por defecto de $$ISSUERCN$$, | + | |
| - | # | + | |
| - | # Leemos el nombre del archivo pdf pasado por línea de comandos | ||
| - | ARCHIVO=$1 | ||
| - | # Creamos el nombre del archivo resultado | ||
| - | ARCHIVOFIRMADO=" | ||
| - | # | ||
| - | ### Personalización ####################################################################################### | ||
| - | NIF=" | ||
| - | DIR='/ | ||
| - | STORE=" | ||
| - | PASSWORD=" | ||
| - | LOCATION=" | ||
| - | ISSUERCN=" | ||
| - | JAVADIR="/ | + | ==== Firma visible en el documento ==== |
| - | AUTOFIRMA="/ | + | |
| - | # Personalizacion de la salida | + | 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. |
| - | FORMAT="pades" | + | |
| - | # Posición de la firma visible | + | Con la versión con interfaz gráfica es sencillo, pero para hacerlo desde línea de comandos hay que trabajarlo un poco. |
| - | PositionOnPageLowerLeftX=' | + | |
| - | PositionOnPageLowerLeftY=' | + | |
| - | PositionOnPageUpperRightX=' | + | |
| - | PositionOnPageUpperRightY=' | + | |
| - | # Fuente | + | Si queremos que aparezca un texto con el nombre |
| - | l2FontColor=' | + | |
| - | l2FontSize=' | + | |
| - | l2FontFamily=' | + | |
| - | l2FontStyle=' | + | |
| - | # Página | + | <code bash> |
| - | signaturaPage='1' | + | autofirma sign -i documento.pdf -o documento_signed.pdf -store pkcs12: |
| + | signaturePositionOnPageLowerLeftY=130\n\ | ||
| + | signaturePositionOnPageUpperRightX=250\n\ | ||
| + | signaturePositionOnPageUpperRightY=245\n\ | ||
| + | signaturePage=1\n\ | ||
| + | layer2FontColor=black\n\ | ||
| + | layer2FontSize=8\n\ | ||
| + | layer2FontFamily=1\n\ | ||
| + | layer2FontStyle=0" | ||
| + | </ | ||
| - | # Rúbrica o imagen | + | Si queremos firmar con una imagen (como una firma manuscrita): |
| - | # Se crea con el comando: base64 -w 0 < | + | |
| - | # | + | |
| - | # Otra forma: llamar al comando base64 directamente, | + | |
| - | signatureRubricImage=$(base64 -w 0 ~/ | + | |
| - | # 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 < |
| - | # $$SUBJECTCN$$ Nombre común (CN, Common Name) del titular del certificado | + | signaturePositionOnPageLowerLeftX=50\n\ |
| - | # $$ISSUERCN$$ Nombre común (CN, Common Name) del emisor del certificado de firma | + | signaturePositionOnPageLowerLeftY=130\n\ |
| - | # $$CERTSERIAL$$ Número de serie del certificado de firma | + | signaturePositionOnPageUpperRightX=250\n\ |
| - | # $$SIGNDATE=PATRÓN$$ Fecha de la firma | + | signaturePositionOnPageUpperRightY=245\n\ |
| - | # $$GIVENNAME$$ Nombre del titular (G, Given Name) (podría estar vacío) | + | signaturePage=1" |
| - | # $$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: | + | <WRAP center round info 60%> |
| - | # https:// | + | La imagen debe ser en formato JPEG. También puede indicarse directamente el Base 64 de la imagen. Para ello, ejecutamos el comando |
| - | # | + | </ |
| - | FECHA=" | + | |
| - | # Texto que queremos que aparezca en la firma | + | ===== Validar / verificar firma ===== |
| - | # Este es un texto libre, pero debe entrecomillarse con comillas simples, ya que contiene caracteres ' | + | |
| - | LAYER2TEXT='En ' | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Firma digital de $$GIVENNAME$$ $$SURNAME$$ | + | |
| - | Certificado emitido por ' | + | |
| - | $$ORGANIZATION$$' | + | |
| - | + | ||
| - | # Configuración que espera AutoFirma | + | |
| - | CONFIG=" | + | |
| - | 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, | + | |
| - | + | ||
| - | $JAVADIR/ | + | |
| - | -i " | + | |
| - | -o " | + | |
| - | -store $STORE | + | |
| - | -format $FORMAT | + | |
| - | -password $PASSWORD | + | |
| - | -filter subject.contains: | + | |
| - | -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/ | + | |
| - | + | ||
| - | $JAVADIR/ | + | |
| - | -i " | + | |
| - | -o " | + | |
| - | -store $STORE | + | |
| - | -format $FORMAT | + | |
| - | -password $PASSWORD | + | |
| - | -alias " | + | |
| - | -config " | + | |
| - | + | ||
| - | echo "" | + | |
| - | exit | + | |
| - | + | ||
| - | # FIN de firma.sh | + | |
| - | </ | + | |
| + | * [[https:// | ||
| ===== Recursos ===== | ===== Recursos ===== | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
informatica/software/autofirma.1745051473.txt.gz · Última modificación: por tempwin
