Cómo generar un certificado SSL autofirmado. #SíAlCifrado

Esta semana en Diario De Una Linuxera estamos llevando a cabo una serie de artículos y tutoriales bajo el hashtag de #SíAlCifrado, y hoy vamos a mostrar como firmar nuestros propios certificados SSL a partir de una CA (entidad certificadora) que crearemos nosotros mismos.

 

Antes de empezar, y para quien no lo sepa el protocolo https es aquel que a través de un certificado SSL cifra los datos que enviamos y recibimos a la web de forma que solo nosotros y la web en la que estamos navegando pueden entenderlos, evitando así que cualquier persona pueda ver lo que enviamos a la web (en el caso de usar el clásico http).

 

Para comenzar a firmar nuestros propios certificados SSL solo necesitamos una Shell en nuestro servidor (root a ser posible) y tener OpenSSL instalado (viene por defecto en Debian y otras distribuciones). Comenzaremos por crear nuestra entidad certificadora (CA) con la que firmaremos todos los certificados que queramos.

 

Lo primero es crear un directorio en el que tener nuestra CA y nuestros certificados (en mi caso /root/diariodeunalinuxera.com). Posteriormente crearemos la clave privada de nuestra CA, que bajo ningún concepto debemos compartir con nadie ni mucho menos subir a Internet. Para esto ejecutamos:

 

openssl genrsa -aes256 -out ca.key 4096

 

Nuestra clave será de 4096 bits, es decir, tendrá la máxima seguridad posible. Debemos introducir una contraseña, que lógicamente no debemos olvidar.

 

ssl1

 

Ahora crearemos la clave pública de nuestra CA que puede tener la duración que queramos, que en mi caso serán 3650 días (10 años), utilizando el siguiente comando:

 

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

 

ssl2

 

Aquí simplemente tenemos que rellenar los datos que nos piden, no tienen porqué ser reales (y mejor si no lo son). Una vez hecho esto ya tendríamos nuestra entidad certificadora preparada para firmar certificados. Ahora crearemos la clave pública y privada de nuestro primer certificado SSL, que firmaremos posteriormente.

 

openssl genrsa -aes256 -out diariodeunalinuxera.com.key 4096

 

Al igual que con la CA, nuestro certificado será de 4096 bits para garantizar la máxima seguridad. También deberemos introducir una contraseña (yo suelo poner la misma que en la CA).

 

ssl3

 

Ahora procederemos a crear la clave pública de nuestro certificado, utilizando el siguiente comando:

 

openssl req -new -sha256 -key diariodeunalinuxera.com.key -out diariodeunalinuxera.com.csr

 

Simplemente tenemos que decirle la clave que hayamos puesto a nuestro certificado y al igual que en el caso de la CA, ir rellenando toda la información que nos pide. En ‘extra’ atributes lo dejamos en blanco.

 

ssl4

 

Con esto ya tendríamos nuestro certificado hecho, pero ahora tenemos que firmarlo utilizando nuestra CA.

 

openssl x509 -req -days 3650 -in diariodeunalinuxera.com.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out diariodeunalinuxera.com.crt

 

Con este comando estaríamos firmando nuestro certificado por 3650 días (10 años) y le estaríamos asignando el número serial 01. Es importante que este número sea distinto en todo los certificados que firmemos o tendremos problemas. Por último introducimos la clave de nuestra CA.

 

ssl5

 

Para dejar nuestro certificado sin contraseña (y poder usarlo así cómodamente) ejecutamos el siguiente comando:

 

openssl rsa -in diariodeunalinuxera.com.key -out diariodeunalinuxera.com.key.insecure

 

ssl6

 

Con esto ya tendríamos terminado nuestro certificado SSL autofirmado, que podemos utilizar en el servidor web que tengamos instalado (En mi caso Apache).

 

*Be free, encrypt!

 

#SíAlCifrado

 

El cifrado no es solo cosa de terroristas

Cómo cifrar dispositivos USB en Debian 8 Jessie

Cómo cifrar y firmar un correo electrónico

Cómo cifrar un dispositivo Android

Openmailbox, K9-mail y APG. Correo cifrado en Android

 

También puede interesarte...

12 comments

  1. No es por decir nada pero uso https everywhere para asegurarme que conecte siempre que pueda de forma seguro y en este caso no esta cifrada la conexión.
    Saludos

  2. Https everywhere NADA garantiza.
    Https everywhere, pertenece a la Electronic Frontier Foundation. Una supuesta fundación que lucha por los derechos de la privacidad en Internet, nada más lejos de la realidad, son ellos mismos quiénes quieren implantar la moneda digital Bitcoin, ése proyecto de risa Tor Project, también pertenece a la EFF, FBI, y demás berracos:
    http://redeszone.net/2014/01/03/la-nsa-trabaja-en-un-ordenador-cuantico-para-romper-cualquier-cifrado

    1. Bueno bien, entonces que hago? me meto en una cueva y me desconecto de todo? Dame alguna alternativa mejor, esta claro que es imposible ser invulnerable y estar 100% seguro pero algo hará, me fio mucho mas de webs a las que acedo vía segura y al menos se lo pongo algo mas difícil para buscar.
      Y no entiendo que le pasa a TOR.

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies, porque no le queda otro remedio. Si continúas navegando estás dando tu consentimiento para su aceptación y también a la política de cookies, pincha en el enlace para mayor información. ACEPTAR

Aviso de cookies