Openssl Firma Certificado
Openssl Firma Certificado
Openssl Firma Certificado
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
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
Certificado
de
la
Autoridad
de
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
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
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