Openssl Firma Certificado

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Certificados con OpenSSL

OpenSSL es una aplicacin y una API GNU relaccionada con temas de cifrado cuya web es www.openssl.org Consiste en un robusto paquete de herramientas de administracin y bibliotecas funciones relacionadas criptogrficas con a la criptografa, paquetes que como suministran OpenSSH y otros

navegadores web (para acceso seguro a sitios HTTPS). Estas herramientas ayudan al sistema a implementar el

Secure

Sockets Layer (SSL), as como otros protocolos relacionados con la


seguridad, como el Transport Layer Security (TLS). Este paquete de software es importante para cualquiera que est planeando usar cierto nivel de seguridad en su mquina con un sistema operativo libre basado en GNU/Linux.

OpenSSL

tambin

permite

crear

certificados digitales que pueden aplicarse a un servidor, por ejemplo Apache. Los certificados son unos ficheros que sirven para certificar la identidad de un ordenador, empresa o persona y para realizar cifrado de datos. Los certificados contienen una clave pblica y otra privada. La clave pblica puede ser conocida por todo el mundo, pero la privada debe ser mantenida en secreto. Con la clave pblica se cifran los datos y con la privada se descifran, de manera que cualquiera puede cifrar datos, pero slo el propietario del certificado puede descifrarlos. Aunque no nos confundamos con nuestra ya que esto es bidireccional, que si ciframos algo clave privada cualquiera tenga

nuestra clave pblica y el password podr descifrarlo.

Creacin del Certificacin

Certificado

de

la

Autoridad

de

Creacin de la Clave Privada


Esto crea una clave privada de longitud 1024 bits con el algoritmo triple DES y la guarda en el fichero ca.key: openssl genrsa -des3 -out ca.key 1024 Analicemos la instruccin: openssl genrsa [opciones] [tamao] Genera una nueva clave RSA del tamao especificado como argumento. -des, -des3 Cifra la clave privada con DES o Triple-DES respectivamente. -out <fichero> Almacena la clave en el fichero especificado como argumento, en este caso ca.key

Creacin del Certificado Autofirmado Hay que ejecutar la siguiente instruccin: openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Analicemos la instruccin: openssl req [opciones] Genera una peticin de certificado (o un certificado autofirmado). -new Indica que estamos realizando una peticin nueva. -x509 Crea una estructura X.509 en lugar de una peticin.

-days <dias> Especifica el nmero de das que un certificado creado con -x509 es vlido. -key Indica la clave que vamos a utilizar para generar el certificado. -out Almacena la clave en el fichero especificado como argumento, en este caso ca.crt Emisin de una Solicitud de Firmado de Certificado (CSR) Creacin de la Clave Privada openssl genrsa -des3 -out server.key 1024 Esta instruccin es exactamente igual que la que utiliz la autoriadad certificadora para generar su clave privada. Hay que tener en cuenta que el apartado Creacin del Certificado de la

Autoridad de Certificacin, slo lo reproducimos ha efectos


prcticos, ya que en un caso real la Autoridad de Certificacin (CA) nos proporcionar el certificado en este caso ca.crt y la clave en este caso ca.key.

Creacin del CSR El CSR o (Certificate Signing Request, peticin de firma de

certificado), es un fichero que crea una entidad para pedirle a otra que lo firme, verificando que los datos de la primera entidad son correctos. As unas entidades van certificando a otras creando una cadena de certificacin, donde la primera entidad se llama la raz de certificacin. openssl req -new -key server.key -out server.csr Analicemos la instruccin: openssl req [opciones]

Genera una peticin de certificado (o un certificado autofirmado). -new Indica que estamos realizando una peticin nueva. -key Indica la clave que vamos a utilizar para generar el certificado. -out Almacena la clave en el fichero especificado como argumento, en este caso server.csr

*Observamos que en este caso no hemos generado un certificado autofirmado como en el caso anterior sino una peticin de firma de certificado.

Firmado del CSR por la Autoridad de Certificacin Para que el CSR sea un certificado vlido, dede haber una entidad que lo firme. En este caso vamos a utilizar un script y un archivo de

configuracin que nos simplificar la instruccin definitiva para la firma, aunque hay otras maneras. Llamamos al script sign.sh #!/bin/sh CSR=$1 if test $# -ne 1 then echo "Usage: sign.sign .csr" exit 1 fi if test ! -f $CSR then echo "CSR not found: $CSR" exit 1 fi case $CSR in

*.csr ) CERT="`echo $CSR | sed -e 's/.csr/.crt/'`" ;; * ) CERT="$CSR.crt" ;; esac if test ! -d ca.db.certs then mkdir ca.db.certs fi if test ! -f ca.db.serial then echo '01' >ca.db.serial fi if test ! -f ca.db.index then touch ca.db.index fi exit 0 Creamos un archivo de configuracin para la firma del certificado esto nos ahorra unos cuantos parmetros en la instruccin empleada en la firma. Lo llamamos ca.config

[ ca ] default_ca [ CA_own ] dir certs new_certs_dir database serial RANDFILE certificate = . = $dir = $dir/ca.db.certs = $dir/ca.db.index = $dir/ca.db.serial = $dir/ca.db.rand = $dir/ca.crt = CA_own

private_key default_days default_crl_days default_md preserve policy [ policy_anything ] countryName stateOrProvinceName localityName organizationName organizationalUnitName commonName emailAddress

= $dir/ca.key = 365 = 30 = md5 = no = policy_anything

= optional = optional = optional = optional = optional = supplied = optional

Ejecutamos el script pasndole como parmetro el CSR que hemos generado en el paso anterior: sign.sh server.csr Una vez ejecutado el script ya podemos introducir la instruccin que se encargar de firmar el certificado: openssl ca -config ca.config -out server.crt -infiles

server.csr Analicemos la instruccin: openssl ca [opciones] Gestiona una CA definida en el fichero de configuracin de OpenSSL (openssl.cnf). Por defecto firma una CSR (peticin de certificado).

-config <fichero> Indica el fichero con los parmetros de configuracin. -out <fichero> El certificado firmado se almacenar en el fichero dado. -infiles <fichero> El CSR para firmar se encuentra en el fichero dado como argumento . Esto crear un certificado vlido llamado server.crt y que

podremos usar a su vez para firmar otros certificados. Ya AC tenemos en este nuestro caso certificado puede firmado verificarlo por con la la autoridad siguiente

certificadora, as que cualquiera que tenga el certificado de la ca.crt instruccin: openssl verify -CAfile server.crt Este proceso nos genera algunos archivos que podemos eliminar del sistema con la siguiente instruccin: rm -f ca.db.serial.old ca.db.index.old

También podría gustarte