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 12:00] – [Firma visible en el documento] 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 25: | Línea 25: | ||
| <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 61: | Línea 61: | ||
| <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:/ |
| </ | </ | ||
| - | 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. | ||
| - | # | ||
| - | # ~/ | ||
| - | # | ||
| - | # 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$$, | ||
| - | # * 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="/ | ||
| - | AUTOFIRMA="/ | ||
| - | |||
| - | # Personalizacion de la salida | ||
| - | FORMAT=" | ||
| - | |||
| - | # Posición de la firma visible | ||
| - | PositionOnPageLowerLeftX=' | ||
| - | PositionOnPageLowerLeftY=' | ||
| - | PositionOnPageUpperRightX=' | ||
| - | PositionOnPageUpperRightY=' | ||
| - | |||
| - | # Fuente de letras | ||
| - | l2FontColor=' | ||
| - | l2FontSize=' | ||
| - | l2FontFamily=' | ||
| - | l2FontStyle=' | ||
| - | |||
| - | # Página | ||
| - | signaturaPage=' | ||
| - | |||
| - | # Rúbrica o imagen a añadir, opcional | ||
| - | # 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 | ||
| - | # 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:// | ||
| - | # | ||
| - | FECHA=" | ||
| - | |||
| - | # Texto que queremos que aparezca en la firma | ||
| - | # Este es un texto libre, pero debe entrecomillarse con comillas simples, ya que contiene caracteres ' | ||
| - | LAYER2TEXT=' | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | 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 | ||
| - | </ | ||
| ==== 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: | + | 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" | ||
| </ | </ | ||
| + | |||
| + | Si queremos firmar con una imagen (como una firma manuscrita): | ||
| + | |||
| + | <code bash> | ||
| + | autofirma sign -i documento.pdf -o documento_signed.pdf -store pkcs12: | ||
| + | signaturePositionOnPageLowerLeftX=50\n\ | ||
| + | signaturePositionOnPageLowerLeftY=130\n\ | ||
| + | signaturePositionOnPageUpperRightX=250\n\ | ||
| + | signaturePositionOnPageUpperRightY=245\n\ | ||
| + | signaturePage=1" | ||
| + | </ | ||
| + | |||
| + | <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 '' | ||
| + | </ | ||
| + | |||
| ===== Validar / verificar firma ===== | ===== Validar / verificar firma ===== | ||
| Línea 240: | Línea 107: | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
informatica/software/autofirma.1745056839.txt.gz · Última modificación: por tempwin
