Crear una Entidad certificadora CA
De Wikillano
Contenido |
Paquetes
Lo primero que voy a hacer es instalar el paquete openssl
saturno:~# apt-get install openssl
Cambio de directorio:
saturno:~# cd /etc/ssl/certs/
Crear la CA
Creo la Entidad Certificadora, nos pedira datos y una passphrase para nuestra CA “la memorizamos”
saturno:/etc/ssl/certs# openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -days 3650 -out cacert.pem Generating a 1024 bit RSA private key ..........++++++ ................................................++++++ writing new private key to 'cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:BCN Organization Name (eg, company) [Internet Widgits Pty Ltd]:wikillano Organizational Unit Name (eg, section) []:wikillano dept Common Name (eg, YOUR name) []:ballano@ya.com Email Address []:ballano@ya.com saturno:/etc/ssl/certs#
Con este comando creamos un CA para certificados X509 con algoritmo de encriptación rsa de 1024 bytes. Con el −keyout le indicamos que la clave privada de nuestra CA se almacene en el fichero cakey.pem y la clave publica −out en el cacert.pem. la opcion -days 3650 es para que nuestra CA no expire en 10 años.
Ahora que ya tenemos nuestra propia entidad certificadora podemos crear los certificados que queramos.
Generamos la clave privada
saturno:/etc/ssl/certs# openssl genrsa -des3 -out serv-priv.pem -passout pass:password 1024
resultado:
Generating RSA private key, 1024 bit long modulus ...................................................++++++ ...........++++++ e is 65537 (0x10001)
Con esto se genera la clave privada la cual tendrá un algoritmo de cifrado triple des (−des3) de 1024 y se almacenara en el fichero (−out) serv−priv.pem y con el comando //passout pass:// indicamos la passfrase para nuestra clave privada. yo le he puesto el mismo pass de antes, pero imagino que es igual ya que el password que debe coincidir es el de la clave privada con la pública. Ahora generamos la petición de certificado
Peticion de certificado:
openssl req -new -subj "/DC=wiki.ballano.net/OU=net/CN=wiki.ballano.net/O=wikillano" -key serv-priv.pem -passin pass:password -out petic-certificado-serv.pem
A la petición le indicamos que usará la clave privada que hemos hecho en el anterior comando -key serv-priv.pem y le indicamos el password que usamos en el anterior (-passing pass):pass y como salida (-out)le indicamos que genere el siguiente fichero petic-certificado-serv.perm. Crear el certificado
Finalmente ya podemos emitir el certificado. Para definir las características de un certificado openssl dispone del directorio /etc/ssl donde hay un fichero openssl.cnf con lo que podemos definir las características. Pero hay una forma mas simple de darle estas características, mediante la generación de un fichero de configuración por parte nuestra.ej:
creamos un fichero llamado “config1.txt” con el siguiente contenido:
basicConstraints = critical,CA:FALSE extendedKeyUsage = serverAuth
En el fichero le indicamos el basicConstraints=critical,CA:FALSE para que cumpla con el X509v3 y con la RFC3280. También le indicamos que el certificado servira para un servidor con lo siguiente extendedKeyUsage=serverAuth, por ejemplo un servidor web que es para lo que lo utilizaré más adelante.
Ahora si, creamos el certificado:
saturno:/etc/ssl/certs# openssl x509 -CA cacert.pem -CAkey cakey.pem -req -in petic-certificado-serv.pem -days 3650 -extfile config1.txt -sha1 -CAcreateserial -out servidor-cert.pem
Resultado:
Signature ok subject=/DC=wiki.ballano.net/OU=net/CN=wiki.ballano.net/O=wikillano Getting CA Private Key Enter pass phrase for cakey.pem: saturno:/etc/ssl/certs#
En el comando anterior indicamos que sera un certificado del tipo x509 cuya CA (−CA) esta definida en el fichero cacert.pem (realizado anteriormente) y que usa como clave privada (−CAkey) el fichero cakey.pem y que el certificado a generar tendrá las especificaciones definidas en el apartado anterior (−req −in) las cuales están en el fichero de petición petic−certificado−serv.pem. El certificado tendrá una validez de diez años.
Durante la ejecución del comando se nos pedirá la clave de la CA.
Al final la cosa queda más o menos así:
CA Certificado cakey.pem serv-priv.pem cacert.pem servidor-cert.pem Conclusión
Pues ya tenemos los certificados listos para utilizarlos con nuestro servidor web.
Links de interes y agradecimientos a:
