Ir al contenido principal

Validación firma digital utilizando openssl

Cuando los certificados se encuentran vigentes:

https://validar.encodesa.com.ar/

Cuando el certificado caducó:

https://validadordefirmas.gob.ar/upload

https://www.utn.edu.ar/images/Secretarias/TIC/Instructivo-para-la-validacin-de-la-firma-digital.pdf

Para realizar análisis estructurales de archivos PDF:

https://informaticayperitajes.blogspot.com/2025/02/analisis-forense-de-documentos-en.html

Paso 1:

Obtener certificado del archivo firmado digitalmente.

1. Abrir el archivo digital con algún visualizador de PDF. (En Ubuntu puede ser Okular)

2. Abrir el panel de firma.

3. Propiedades

4. Exportar certificado: Certificate.cer

5. Obtener información detallada del certificado:

openssl x509 -in Certificate.cer -text -noout > Certificate.cer.txt


6. En el archivo txt recién generado, identificar el apartado: X509v3 extensions:

6.1. Para el caso de AC-Modernización:

           Authority Information Access: 

                CA Issuers - URI: https://firmar.gob.ar/aia/acmodernizacionpfdr.crt

6.2. Para el caso de AC-ONTI

            Authority Information Access: 

                CA Issuers - URI: http://pki.jgm.gov.ar/aia/cafdONTI(1).crt

6.3. Para el caso AC-LAKAUT

            Authority Information Access: 

                CA Issuers - URI:https://www.lakautac.com.ar/crt/lakautac.crt


7. Descargar el certificado digital de la Autoridad Certificante.

7.1. AC Modernización

wget https://firmar.gob.ar/aia/acmodernizacionpfdr.crt

7.2. AC ONTI

wget "http://pki.jgm.gov.ar/aia/cafdONTI(1).crt"

7.3. AC-LAKAUT

Abrir con el navegador https://www.lakautac.com.ar/crt/lakautac.crt

Descarga el archivo: certdist.cer


8. Repetir el paso 5 para este certificado.

8.1. AC Modernización

openssl x509 -in acmodernizacionpfdr.crt -text -noout > acmodernizacionpfdr.crt.txt

8.2. AC ONTI

openssl x509 -in "cafdONTI(1).crt" -text -noout > cafdONTI.crt.txt

8.3. AC LAKAUT

openssl x509 -in certdist.cer -text -noout > certdist.cer.txt


9. En el apartado: X509v3 extensions:

9.1. AC Modernización
            Authority Information Access: 
                CA Issuers - URI:http://acraiz.gov.ar/acraizca.cer

9.2. AC ONTI
            Authority Information Access: 
                CA Issuers - URI:http://acraiz.gov.ar/ca.crt

9.3. AC LAKAUT
            Authority Information Access: 
                CA Issuers - URI:http://acraiz.gov.ar/ca.crt    


10. Descargar el certificado raíz.

wget http://acraiz.gov.ar/acraizca.cer
wget http://acraiz.gov.ar/ca.crt

11. Convertir todos los certificados a modo texto (PEM).

openssl x509 -inform der -in Certificate.cer -out Certificate.pem

11.1. AC Modernización

openssl x509 -in acmodernizacionpfdr.crt -out acmodernizacionpfdr.pem -outform PEM
openssl x509 -inform der -in acraizca.cer -out acraizca.pem

11.2. AC ONTI
openssl x509 -in "cafdONTI(1).crt" -out cafdONTI.pem -outform PEM
openssl x509 -in ca.crt -out ca.pem -outform PEM

11.3. AC LAKAUT
openssl x509 -inform der -in certdist.cer -out certdist.pem
openssl x509 -in ca.crt -out ca.pem -outform PEM



12. Validar certificado
12.1. AC Modernización

openssl verify -verbose -CAfile acraizca.pem acmodernizacionpfdr.pem

Devuelve el siguiente mensaje: acmodernizacionpfdr.pem: OK


openssl verify -CAfile acraizca.pem -untrusted acmodernizacionpfdr.pem Certificate.pem

Devuelve el siguiente mensaje: Certificate.pem: OK


12.2. AC ONTI
openssl verify -verbose -CAfile ca.pem cafdONTI.pem
Devuelve el siguiente mensaje: cafdONTI.pem: OK



openssl verify -CAfile ca.pem -untrusted cafdONTI.pem Certificate.pem

Para el caso de certificado expirado:
Devuelve el siguiente mensaje: serialNumber = CUIL 20xxxxxxxx8, C = AR, CN = PEREZ Juan
error 10 at 0 depth lookup: certificate has expired
error Certificate.pem: verification failed

Para el caso de certificado vigente:
Certificate.pem: OK

12.3. AC LAKAUT
openssl verify -verbose -CAfile ca.pem certdist.pem
certdist.pem: OK

openssl verify -CAfile ca.pem -untrusted certdist.pem Certificate.pem
Certificate.pem: OK

13. Para el caso de certificado expirado:

Se utiliza openssl incluyendo una validación para una fecha determinada.

13.1: AC MODERNIZACIÓN

13.2: AC ONTI

$ openssl verify -CAfile ca.pem -untrusted cafdONTI.pem  -attime $(date -d "2023-10-05 14:30:00" +%s) Certificate.pem
Certificate.pem: OK


Otra opción es pdfsig:

Actualizado 14/3/2025 08.30hs:

AC Modernización:

$ pdfsig FirmadoMio.pdf 
Digital Signature Info of: FirmadoMio.pdf
Signature #1:
  - Signature Field Name: Signature1
  - Signer Certificate Common Name: Andres Santiago ALIAGA
  - Signer full Distinguished Name: C=AR,serialNumber=CUIL 20250385170,CN=Andres Santiago ALIAGA
  - Signing Time: Mar 13 2025 17:37:51
  - Signing Hash Algorithm: SHA-256
  - Signature Type: adbe.pkcs7.detached
  - Signed Ranges: [0 - 165630], [195632 - 197515]
  - Total document signed
  - Signature Validation: Signature is Valid.
  - Certificate Validation: Certificate issuer is unknown. 

AC ONTI
$ pdfsig F20250306155032.pdf 
Digital Signature Info of: F20250306155032.pdf
Signature #1:
  - Signature Field Name: Certificación
  - Signer Certificate Common Name: Sistema Administracion de Causas-Justicia Cordoba
  - Signer full Distinguished Name: CN=Sistema Administracion de Causas-Justicia Cordoba,OU=Investigacion Desarrollo e Innovacion Tecnologica,O=Poder Judicial de la Provincia de Cordoba,C=AR,serialNumber=CUIT 30999253438
  - Signing Time: Mar 06 2025 15:50:32
  - Signing Hash Algorithm: SHA-256
  - Signature Type: adbe.pkcs7.sha1
  - Signed Ranges: [0 - 7314], [20686 - 41274]
  - Total document signed
  - Signature Validation: Digest Mismatch.

Por algún motivo los documentos del SAC muestran la leyenda Digest Mismatch. No obstante ello, el documento es válido.

pdftk F20250306155032.pdf dump_data > metadata.txt

Al analizar el archivo metadata.txt con deepseek

Problemas Detectados en los Metadatos
Fecha de Modificación/Creación en el Futuro:

plaintext
Copy
ModDate: D:20250306155032-03'00'  # 6 de marzo de **2025** (¡fecha futura!)
CreationDate: D:20250306155032-03'00'
Esto sugiere que el PDF fue generado con una fecha inválida, lo que podría interferir con la verificación de integridad (hash) en Okular.

Uso de iTextSharp 4.1.6:

Versión antigua (2009) de la biblioteca iText, conocida por generar PDFs con metadatos o estructuras no estándar. Esto podría causar incompatibilidades con Okular.

Caracteres Especiales Mal Formateados:

' en lugar de apostrofes (') y entidades HTML (Nº, OPERACIÓN) en los campos Title y Subject.

Comentarios