Firmando con tu Fiel y Openssl

A continuación les mostraremos como utilizar su firma electrónica avanzada FIEL para autenticarse en sitios web y para firmar documentos, para esto ocupamos la herramienta openssl

Que es la FIEL?

La Firma Electrónica Avanzada (FIEL) es un archivo digital que te identifica al realizar trámites por internet en el SAT e incluso en otras dependencias del Gobierno de la República.

Tu FIEL es única, es un archivo seguro y cifrado que incluye tu firma caligráfica.

Por sus características, es segura y garantiza tu identidad.

Como se compone?

Una clave o llave privada (archivo electrónico con extensión KEY) y su respectiva contraseña de acceso.

Un certificado digital (archivo electrónico con extensión CER) expedido por el SAT, que contiene la clave o llave pública del titular de la FIEL, es del tipo X509.

Como me autentifico en sitios ajenos al SAT con estos archivos?

Hay que verificar que el certificado CER, llave KEY y contraseña coincidan. La forma de saberlo es calculando el modulus de cada uno de los archivos.

1.- Obtenemos nuestra llave privada de la llave KEY mediante el uso de la contraseña correspondiente y lo guardamos en un archivo.

openssl pkcs8 -inform DER -in aaa010101aaa_csd_01.key -passin pass:a0123456789 -out millaveprivada.key

2.- Procedemos a calcular el modulus del archivo generado.

openssl rsa -in millaveprivada.key -noout -modulus

3.- Procedemos a obtener el modulus del certificado.

openssl x509 -inform DER -in aaa010101aaa_csd_01.cer -noout -modulus

4.- Los valores de los modulus de los dos archivos debe ser igual para poder validar su autenticidad.

Como firmo cualquier documento electrónico con estos archivos (CER, KEY)?

1.- Crear un archivo PEM a partir del archivo KEY de la FIEL.

openssl pkcs8 -inform DER -in miarchivo.key -passin pass:contraseña -out miarchivo.pem

Se recomienda que en cuanto terminen de usar el PEM lo borren porque el archivo no esta protegido por la contraseña y si alguien lo obtiene podría firmar fácilmente documentos a nombre del dueño de la FIEL.

2.- Ahora que ya se tiene el archivo PEM, se puede firmar la información de la cadena original en cadena.txt. La cadena original no es mas que el md5, sha256 o cualquier otro algoritmo de hash aplicado al documento a firmar, también se le llama resumen de archivo. Para esto ejecutamos el siguiente comando:

openssl dgst -sha1 -sign miarchivo.pem cadena.txt > sellobinario.txt

El archivo resultante del paso anterior sellobinario.txt ¡es el sello!, pero, aún no puede usarse porque está escrito en bytes, y si lo abrimos con un editor de texto veremos caracteres raros. Por eso el SAT exige que ese sello se reescriba en formato Base64, para eso ejecutamos el comando:

openssl base64 -in sellobinario.txt -out sello.txt

Ahora sí, el archivo sello.txt contiene el sello que podemos agregar en el XML de la factura digital o a el documento que estemos firmando.