martes, 18 de octubre de 2011

Ejemplos de uso de OpenSSL

Manejo de certificados digitales X509 v3 a través del software libre OpenSSL.

Se utiliza un ejemplo real de sucesiones de ordenes de línea de comandos para que el lector pueda realizar ejercicios prácticos.

Sólo tendrás que ir copiando las ordenes de este tutorial en la consola de la maquina y disponer de un certificado además de una copia del software OpenSSL.

OpenSSL es un software que tiene tantas utilidades como la navaja suiza, ideal para la gestión de los certificados digitales.

                                          Indice

1.-Exportar Certificado para openSSL.
2.-Firmar documento
3.-Cifrado asimétrico
4.-Verificar firma
5.-Extraer los certificados a formato .DER


1.-Exportar Certificado para openSSL.

Despues de exportar el certificado desde el almacen de certificados de Mozilla Firefox en formato .p12

Pasos para convertir un certificado emitido por la FNMT al formato OpenSSL
Lo pasamos a formato manejable por openSSL, en este caso al formato de tipo texto .txt y le damos la extension .pem

Pasar de pkcs12 a formato pem muy importante el parametro -clcerts para que coja nuestro certificado y no el raiz.

c:>openssl pkcs12 -in antonio_fnmt.p12 -out antonio_fnmt.pem -clcerts -passin
pass:Redmoon3632 -passout pass:Redmoon3632

Ver datos del certificado por consola

c:>openssl x509 -in antonio_fnmt.pem -noout -subject

Borrar la pass phrase de la clave privada de un certificado y pasar la clave privada a un archivo .key

openssl rsa -in antonio_fnmt.pem -out antonio_fnmt.key

Extaer la clave publica para realizar la verificaciones

openssl rsa -in antonio_fnmt.pem -out publica_antonio_fnmt.pem -pubout

2.-Firmar documento

openssl dgst -sign antonio_fnmt.pem -out firmado.sig entrada.txt

Verificar documento

openssl dgst -verify publica_antonio_fnmt.pem -signature firmado.sig entrada.txt

3.-Cifrado asimétrico

Generar llave del algoritmo asimétrico RSA: Vamos a generar una llave privada de 1020 bits

OpenSSL> genrsa -out privada1.key 1024

Cifrar la clave privada con DES para evitar su uso fraudulento:

OpenSSL> genrsa -out privada2.key -passout pass:redmoon2010 -des 1024

Se realiza este cifrado porque la clave privada se genera como un fichero de texto que cualquiera podría leer, para evitar esto la ciframos.

Generar claves públicas derivadas:


OpenSSL> rsa -in privada1.key -pubout -out publica1.key
OpenSSL> rsa -in privada2.key -pubout -out publica2.key -passin pass:redmoon2010

Firmar el archivo digitalmente:

OpenSSL> dgst -c -sign privada1.key -out firmado.sig entrada.txt

El archivo firmado.sig contendrá la firma digital en formato binario.

4.-Verificar firma

OpenSSL> dgst -c -verify publica1.key -signature firmado.sig entrada.txt

OpenSSl mostrará un Verified OK si todo ha sido correcto, o un Verification Failure si algo ha fallado.

Conversión de firmas binarias a texto: Como ya he dicho antes las firmas generadas tienen un formato binario, con lo cual para su envio por correo electrónico las convertimos a texto. Así que vamos a generar una versión en base64.

OpenSSL> base64 -in firmado.sig -out firmado.b64

Como puedes observar, el fichero generado es legible y fácilmente agregable a cualquier fichero de texto.

5.-Extraer los certificados a formato .DER

c:>openssl pkcs7 -in antonio.pem -print_certs -out certs.pem
c:>openssl pkcs7 -in antonio.pem -outform DER -out antonioPKCS7.der

Espero que esta información ayude a adentraros en este tema.

No hay comentarios:

Publicar un comentario