Hoy día es casi obligatorio que cada sitio web use un certificado SSL para asegurar la comunicación entre el servidor y el cliente.
Como desarrolladores vamos a necesitar que nuestro servidor de staging tenga su propio certificado para poder reproducir las mismas condiciones que tendremos en un eventual servidor de producción.
En otros casos, como cuando trabajamos con PWA o Service Workers el certificado es un requisito para que las cosas funcionen.
Los certificados tienen un costo anual como los tiene un dominio, para evitar este costo en los servidores de desarrollo una buena opción es instalar certificados gratuitos que técnicamente tienen las mismas características y valides que los certificados pagos.
Para el desarrollo de mis proyectos personales tengo contratado un servicio de Vultr ya que necesito pleno acceso al servidor y por sobre todo que sea lo mas barato posible 🙂
En esta instancia tengo deployado un stack LAMP básico al que agregue cosas que fui necesitando (GIT, NODE, etc etc)
El propósito de este articulo es explicar lo simple que es generar e instalar un certificado gratuito en un entorno como este.
Usaremos el servicio de Let’s Encrypt.
Si bien es posible obtener el certificado y luego instalarlo en el servidor, debido al propósito que le vamos a dar al certificado es mas sencillo (exponencialmente mas sencillo!!!) hacerlo con el cliente provisto por Let’s Encrypt, Certbot.
Lo primero es agregar el ppa y luego instalar el cliente
add-apt-repository ppa:certbot/certbot apt-get update apt-get install python-certbot-apache
- Muy probablemente deberían usar sudo si no están trabajando con un usuario Root
Luego ejecutamos el cliente al que le pasaremos el dominio o subdominio. (reemplazar con el nombre del dominio requerido)
certbot --apache -d subdominio.dominio-ejemplo.com
Podemos hacer que el certificado sea valido para distintos subdominios. El ejemplo mas común es que sea valido para el dominio base y el subdominio www
certbot --apache -d dominio-ejemplo.com -d www.domino-ejemplo.com
El instalador nos preguntará si queremos que todo el trafico se redirija automáticamente de http a https
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Cuando termine de correr el instalador podes verificar que el certificado fue instalado en la carpeta “/etc/letsencrypt/live”
El certificado expira a los 90 días, la ventaja de usar Certbot es que también se ocupa de renovarlo automáticamente.
Podemos verificar que esto funciona con este comando
certbot renew --dry-run
Finalmente podremos verificar la validez y características de nuestro certificado de esta manera:
https://www.ssllabs.com/ssltest/analyze.html?d=dominio-ejemplo.com&latest
Yo utilizo Apache como servidor web, pero también es posible instalarlo en NGINX. En ese caso debemos instalar el cliente para NGINX
apt-get install python-certbot-nginx
y correrlo con el siguiente comando
certbot --nginx –redirect
Ya no tenemos excusa para no usar certificados SSL en nuestros proyectos!!!
*La aplicación de las instrucciones mostradas en este articulo pueden modificar la configuración del servidor web y eventualmente causar un mal funcionamiento, se recomienda tomar los recaudos necesarios ya que el autor no es responsable por las consecuencias que pueda tener el uso de estos comandos.