SSL/TLS: poniendo la S en HTTPS
Nov 12, 2018
Entonces estas haciendo un sitio web y claro que quieres que sea seguro para tus usuarios. Pero para que sea seguro necesitas un Certificado de SSL/TLS, entonces googleas un poco y te das cuenta de que son… honestamente bastante caros ¡Debe haber una mejor manera! … o al menos una gratuita… [ Musiquita no cool de informercial ]
¿Qué es un certificado SSL/TLS?
Empecemos con diciendo que si estas haciendo un sitio web necesitas un certificado. Un certificado SSL/TLS sirve para encriptar la comunicación entre tu sitio web y tus usuarios. Al tener un certificado ayudas a proteger la privacidad de tus usuarios: al intercambiar información en internet los datos pasan de un servidor a otro antes de llegar a la computadora del usuario; cualquiera de esos servidores podría ver la información que se esta enviando si no estuviera encriptada. Tener un certificado SSL/TLS garatiza que la comunicación entre tu usuario y tu sitio no es interferida.
Si ya mamá ya voy
a la tortilleríapor mi certificado.
Let’s Encrypt
Let’s Encrypt es un servicio gratuito que te permite solicitar certificados SSL/TLS para usar en todas tus necesidades web. Puedes obtener un certificado en minutos y la única desventaja contra otros servicios de paga es que tienes que renovarlos al menos cada tres meses.
Estos son certificados válidos y seguros en todas* las plataformas y los puedes utilizar para servidores web, de correo, FTP y cualquier otra cosa que utilice un nombre de dominio.
## Certbot Nginx y macOS
Vamos a utilizar la terminal para hacer la mayoría de este tutorial. Instalaremos certbot
para Nginx en macOS, para seguir con la linea de los tutoriales anteriores. Pero si lo quieres hacer para otro sistema hay instrucciones muy concisas para en la documentación oficial de certbot
, de donde esta inspirado este tutorial me estoy robando este tutorial. Y al final vamos a platicar un poco de qué hacer estas utilizando shared hosting y tu proveedor no soporta Let’s Encrypt oficialmente.
También estoy asumiendo que este pequño servidor de nginx + macOS esta en linea y que tienes un dominio ya registrado y configurado. Los cuales son buenos temas para furutos posts.
Para instalar certbot
¡solo tienes que instalar certbot
!
brew install certbot
¡Woooo tranquilo viejo! ¿Qué es eso de brew?
Si no tienes homebrew instalado, puedes revisar el tutorial anterior: Homebrew Potter y Las Dependencias de la Mac
Después si tienes instalado Nginx solo necesitas correr este comando, que seguramente te pedirá tu password del sistema.
sudo certbot --nginx
certbot
necesita permisos de administrador porque tu configuración de nginx seguramente esta en un directorio protegido, y la propia configuración de certbot también lo esta.
Y si sabes lo que estas haciendo en cuyo caso ¿por qué estas leyendo este tutorial? mejor comparteselo a tu amiguito el que no le sabe o ve y ¡disfruta el aire libre! puedes obtener el certificado manualmente y configurar Nginx manualmente también corriendo:
sudo certbot --nginx certonly
Cualquiera de las opciones que decidas solo necesitas seguir las instrucciones en tu pantalla. Te pedirá el nombre del dominio que estas validando y seguramente te pedirá tu correo para contactarte en caso de que haya algun error de seguridad con tu certificado.
Si todo salió bien certbot
se debió haber comunicado con sus servidores, tu sitio debió haber sido aprovado (que recuerda que tiene que tener un dominio ya configurado) y tus certificados deben estar configurados en tu configuración de Nginx.
Finalmente para renovar tu certificado solo necesitas correr este comando en el mismo servidor que hiciste tu configuración incial.
certbot renew
Recuerda que lo debes hacer al menos cada tres meses.
Certbot y el flagelo del shared hosting
Vamos a ponernos bastante técnicos. Algunos shared hosting también soportan directamente Let’s Encrypt, aquí puedes encontrar una lista actualizada continuamente de proveedores que puedes utilizar.
Okeeeey ¿y si mi proveedor no lo soporta?
Esto depende de cada proveedor por lo que realmente no existen instrucciones específicas. Así que te voy a dar una idea general de qué hacer, o más bien de cómo lo he solucionado yo.
Para comenzar necesitas asegurarte de que tu proveedor soporta certificados, si utilizas CPanel (y si estas en shared casi seguro que si) puedes buscar la sección SSL/TLS en Seguridad, y luego Manage SSL Sites.
Si cuentas con esta opción, entonces tu proveedor soporta SSL y en esa sección vas a colocar manualmente tus certificados.
Lo segundo que necesitas es acceso SSH a tu servidor, muchos proveedores no lo tienen activado por default, por lo que probablemente necesites solicitarlo directamente con customer support.
Si tu servidor utiliza Apache tu mejor opción es “montar” el directorio de public_html
directamente en tu computadora. Y apuntando al directorio montado correr:
certbot certonly --webroot -w <directorio_montado> example.com
Este comando va a publicar algunos archivos en public_html/.well_known/challenges
que Apache pondrá en linea y luego serán utilizados para generar tu certificado (por eso necesitamos montar public_html
). Cuando certbot
termine tus certificados deberán estar en el directorio de configuración seguramente /etc/certbot/archive/<example.com>/cert1.pem
Otra opción es detener tu servidor, redireccionar el dominio a tu computadora local, y hacer el proceso corriendo este comando:
sudo certbot certonly --standalone -d example.com
Este es un tutorial con pocas instrucciones específicas pero espero que te ayude a pensar de forma general que necesitas hacer para obtener obtener e instalar un certificado. Proximamente estaré trabajando en un tutorial de SSH, y otro de Git. Y podemos hacer este tutorial más específico si suficientes de ustedes lo solicitan. ¡Gracias por leer!
– Anya Reyes