Certificado SSL. HTTPS en nuestra web.

En esta guía vamos a ver como se activaría https y a autocertificar nuestra web.

Activar módulo SSL

Vamos a ver los pasos que deberíamos de realizar con comandos para conseguir objetivo de esta guía.
Primero deberíamos activar el módulo ssl.
a2enmod ssl
service apache2 restart

Crear certificado y claves

Podemos crear un directorio donde crear las claves del certificado.
mkdir /etc/apache2/ssl
Y ahora en ese directorio vamos a crear las llaves del certificado:
cd /etc/apache2/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt


Configurar Apache

Ahora que ya tenemos nuestro certificado y claves podemos empezar con la configuración de Apache.
Debemos editar el fichero default-ssl.conf.
nano /etc/apache2/sites-available/default-ssl.conf
El archivo debe quedar como en la siguiente imagen:


Activar el SSL Virtual Host
Una vez configurado Apache solo nos queda activar el SSL en el Virtual Host.
a2ensite default-ssl.conf
service apache2 restart

Accediendo al sitio web

Ahora, desde el cliente, debemos acceder a nuestro sitio web, mediante https://, para comprobar que nuestra configuración ha funcionado.
Al acceder al sitio web nos dirá que el certificado no es de confianza, ya que lo hemos creado nosotros.

Al hacer click sobre el candado, según que nabegador se esté utilizando está de un modo o de otro, podemos ver que nos aparece una flecha a la derecha, si la pulsamos nos aparecerá más información acerca de nuestro certificado.


Let’s Encrypt
Yo he utilizado Let’s Encrypt ya que ofrecen certificados válidos por 3 meses y con posibilidad de renovarlo gratuitamente. Hay que asegurarse que Let’s Encrypt pueda dar servicio en nuestro hosting, en mi caso sí puedo utilizarlo.
Clonamos el repositorio en el servidor
git clone https://github.com/letsencrypt/letsencrypt
Nos situamos dentro del directorio que acabamos de descargar y ejecutamos el siguiente comando, sustituyendo el correo por el nuestro y la dirección por la de nuestra web.
cd letsencrypt
./letsencrypt-auto certonly --manual --email admin@example.com -d example.com
Esto nos generará los certificados válidos para nuestra web. Las claves están situadas en la siguiente ruta.
/etc/letsencrypt/live/example.com/

Estos son los archivos que tendremos en el directorio indicado arriba. Podemos mover los archivos a la raíz del proyecto.
cert.pem
chain.pem
fullchain.pem
privkey.pem
Ahora en el archivo donde se cree el servidor, en mi caso app.js, como estoy utilizando node.js en el servidor debo añadir las siguientes líneas.
https.createServer({
   key: fs.readFileSync('privkey.pem'),
   cert:fs.readFileSync('cert.pem')
}, app).listen(port);

Así tendremos un certificado válido y conseguimos un entorno más seguro tanto para los usuarios como para nuestra aplicación y servidor.
by-nc-sa

Comentarios