Introducción

Con un certificado SSL, tu sitio web puede utilizar el protocolo HTTPS para transferir información desde el punto A hasta el punto B de manera segura. Esto es crucial al transmitir información sensible, como por ejemplo, información de tarjetas de crédito en páginas de compras, o Información de Identificación Personal (PII por sus siglas en inglés) en páginas de inicio de sesión, formularios de contacto, etc.

Además de los beneficios de seguridad, los sitios web utilizando SSL obtienen mejores ranking en las búsquedas de Google y un rendimiento optimizado por el uso de HTTP/2. También es importante notar que SSL no protege tu sitio web. Esta guía está diseñada para mostrar a usuarios principiantes e intermedios cómo desplegar un certificado SSL de Let’s Encrypt en sus sitios web auto-alojados.

Paso 1
Recolección de Información

Hoy en día, utilizar HTTPS en tu sitio web es más fácil que nunca. Los principiantes deberían comenzar con tener una conversación con sus empresas de alojamiento web sobre qué opciones les ofrecen.

Hay unas cuantas maneras de agregar SSL a tu sitio web:

  1. Algunos proveedores de alojamiento ofrecen SSL gratuito, incluyendo opciones SSL de un solo clic (p. ej, SiteGround, WPEngine).
  2. Muchos proveedores de alojamiento ofrecen SSL de pago, e implementarán los certificados por ti (p. ej, GoDaddy).
  3. Los usuarios intermedios pueden generar sus propios certificados SSL gratuitos (p. Ej, Certbot / Let’s Encrypt).

Sin importar el tipo de certificado que elijas, el nivel de seguridad es el mismo. Existen diferentes opciones de encriptación disponibles para los certificados SSL a los que les puedes echar un vistazo si gustas.

1.1 - Tipos de Certificados SSL

Algunos visitantes reconocen la autenticidad y la confianza adicional ofrecidos por los certificados de Validación Extendida (EV por sus siglas en inglés) y Organización Validada (OV por sus siglas en inglés), debido a sus rigurosos procesos de validación.

Tienes que familiarizarte con tres tipos de certificados:

  • Dominio Validado (DV)

    Los certificados DV sólo necesitan que la Autoridad de Certificación compruebe que el usuario que solicita el certificado posee y administra el dominio. Los usuarios verán el icono de un candado en la barra de direcciones, sin información específica del usuario.

  • Organización Validada (OV)

    Los certificados OV necesitan que la Autoridad de Certificación confirme que el negocio haciendo la petición está registrado y es legítimo. Cuando los visitantes den clic en el icono del candado verde en el navegador, el nombre del negocio será mostrado.

  • Validación Extendida (EV)

    Los certificados EV requieren aún más documentación para que la Autoridad de Certificación valide la organización. Los visitantes verán el nombre del negocio dentro de la barra de direcciones (en adición al icono del candado verde).

1.2 - Certificados Comerciales vs. Gratuitos

Es importante que evalúes tus preferencias cuando se trata de certificados gratuitos o comerciales.

  • Certificados SSL Comerciales (de Pago)

    Son una opción decente para muchos propietarios de sitios web. El pagar a una Autoridad de Certificación (o tu compañía de hosting) te dará los beneficios de soporte técnico. El nivel de encriptación es el mismo que el de los certificados SSL gratuitos. La diferencia clave es el nivel de soporte que recibirás con tu certificado.

  • Certificados SSL Gratuitos

    Están siendo encabezados por la iniciativa Let's Encrypt, que es una colaboración abierta entre un número de organizaciones globales centrados en hacer los certificados SSL accesibles a todos los propietarios de sitios web.

Nota

Muchos proveedores de alojamiento ofrecen instrucciones específicas sobre cómo desplegar certificados SSL gratuitos. Verifica con los canales de soporte y publicaciones de tu proveedor de alojamiento para obtener más información antes de continuar con esta guía.

1.3 - SSL en la Nube

También puedes obtener los beneficios de certificados SSL a través de proveedores en la nube, como por ejemplo, Redes de Distribución de Contenidos (CDN por sus siglas en inglés) y soluciones como el Firewall para Aplicaciones Web (WAF) de Sucuri, que lo ofrece sin ningún costo adicional.

Estos servicios son un proxy entre tus visitantes y tu sitio web. Al cambiar los registros de tu dominio y apuntar a sus servidores, pueden almacenar tu contenido en caché para hacer tu sitio web más rápido y filtrar tráfico malicioso. Esto también significa que tu navegador reconocerá las direcciones IP conectadas a tu dominio, permitiendo el uso de certificados DV.

Estos proveedores también pueden trabajar con tus propios certificados SSL. Si eres un cliente de Sucuri, puedes contactar nuestro equipo de soporte técnico para más información y asistencia.

Nota

Si estás implementando un certificado SSL a través de tu proveedor de alojamiento, puedes saltarte a la sección Paso 3: Pasos finales importantes.

1.4 - Qué Necesitas para Obtener un Certificado SSL Gratuito

La siguiente guía funciona mejor si tienes una IP dedicada para tu sitio (a través de un VPS o servidor dedicado). Si estás en un servidor compartido, habla con tu servidor sobre cómo desplegar Let's Encrypt, algunos proveedores tienen procesos automatizados para desplegar certificados SSL gratuitos para cuentas de alojamiento compartidas. Es posible utilizar el Nombre de Indicación del Servidor (SNI por sus siglas en inglés) con una de las direcciones IP del servidor y así generar certificados para todos los sitios en el servidor.

El resto de esta guía asume que tienes acceso y control total de tu servidor web.

Necesitarás la siguiente información de tu servidor:

  • Dirección IP
  • Nombre del Servidor (con privilegios de administración o sudo)
  • Contraseña del Usuario (o preferiblemente una llave SSH como forma de autenticación)
  • Software (p.ej, Apache, nginx, IIS)
  • Sistema Operativo y el Número de la Versión (p. ej, Debian 7, Ubuntu 16.04, etc.)

Acceso SSH a través de cPanel

Puedes contactar a tu proveedor de alojamiento para obtener cualquier información que te haga falta.

Nota

Si tienes múltiples subdominios, tienes que hacer una nota en tu calendario si quieres un certificado SSL gratuito. El soporte de Let’s Encrypt para los certificados wildcard estará disponible desde Enero del 2018. Mientras tanto, tendrás que trabajar con tu proveedor de alojamiento para ver qué otras opciones están disponibles.

Paso 2
Generar Certificado

Ahora que ya tienes toda la información, puedes conectarte a tu servidor e instalar una herramienta que generará un certificado SSL.

Desde tu computadora, necesitas una manera de iniciar sesión a tu servidor y enviar comandos SSH. Si estás utilizando una Mac, puedes utilizar Terminal (una aplicación por defecto) y si utilizas Windows, puedes descargar PuTTY. Algunos proveedores de alojamiento ofrecen una interfaz web para correr comandos en tu servidor.

Nota

Las instrucciones van a variar en dependencia del software en tu servidor y tu sistema. Algunos sistemas no soportan Certbot, pero puedes encontrar una lista de clientes con buena reputación que deberían poder funcionar con el entorno de tu servidor.

2.1 - Descripción de los Pasos

Aquí hay un rápido resumen de cómo puedes obtener un certificado SSL gratuito de Let's Encrypt utilizando la herramienta Certbot.

Descripción de los Pasos para Utilizar Certbot:

  1. Conéctate a tu servidor a través de SSH utilizando la dirección IP, el nombre de usuario y la contraseña.
  2. Visita el sitio web de Certbot y escoge el sistema operativo y software de tu servidor.
  3. Sigue las instrucciones dadas para tu servidor para poder realizar los siguientes pasos.
  4. Corre cualquier comando listado para instalar dependencias.
  5. Corre cualquier comando listado para instalar certbot.
  6. Corre los comandos listados para Comenzar y generar el certificado.
  7. Provee una dirección de correo electrónico cuando sea requerida.
  8. Acepta los Términos cuando sea requerido.
  9. Corre los comandos listados para hacer un test a las renovaciones bajo Automatización de la Renovación.
  10. Configura un trabajador cron o systemd en tu servidor para poder automatizar el proceso de renovación.

Las siguientes imágenes y animaciones ilustran el proceso entero para un servidor utilizando Apache en Ubuntu 16.04.

Clientes de Sucuri

“Remover” código de tu sitio web de manera manual puede ser extremadamente peligroso para la salud de tu sitio web. Nunca realices ninguna acción sin una copia de seguridad. Si no estás seguro, por favor, busca asistencia de un profesional.

2.2 - Instalar el Cliente de Certbot

Utilizando las instrucciones provistas por tu servidor, instala cualquier dependencia necesaria y la herramienta Certbot. Las siguientes imágenes son un ejemplo de lo que podrías esperar.

Obtén Instrucciones para tu Servidor desde el Sitio Web de Certbot

Conéctate a tu Servidor a través de SSH (GIF)

Instalar Dependencias (si es Necesario)

Instalar Certbot (GIF)

Nota

Si estás experimentado errores de permisos, verifica con tu proveedor de alojamiento que tengas los permisos de usuario necesarios para correr comandos administrativos (p. ej, sudo).

2.3 - Generar Certificado SSL

Continuando con el mismo conjunto de instrucciones, la sección Comenzar te proveerá los comandos necesarios para crear el certificado SSL para tu sitio web. Las siguientes imágenes son un ejemplo de lo que podrías esperar.

Corre Certbot (GIF)

Acepta los Términos

Crea una Copia de Seguridad

Luego de generar el certificado, notarás que en las NOTAS IMPORTANTES se muestra la ubicación del directorio de configuración de Certbot. Esto contiene las credenciales de tu cuenta, certificado y llaves privadas.

Navega hasta esta ubicación en tu servidor y descarga una copia de seguridad. Si no estás seguro de cómo hacer esto, puedes seguir nuestra publicación paso a paso sobre cómo crear copias de seguridad desde la línea de comandos.

2.4 - Renovación Automática

¡Ya tienes un certificado SSL activo en tu sitio! Tu certificado expirará, ya que los certificados de Let's Encrypt son solamente válidos por 90 días. Puedes automatizar este proceso de modo que no tengas que recordar renovar tu certificado de forma manual.

Es recomendable que configures el trabajador cron o systemd para que renueve tu certificado dos veces por día. Antes de comenzar, nota la ubicación del directorio de configuración de Certbot de la que hablamos en el paso anterior.

Configura la Renovación Automática de tu Certificado SSL a través de un Cron Job

Para programar el cron job para que renueve el certificado SSL:

  1. Conéctate a tu Servidor.
  2. Corre el comando crontab -e
  3. Si te da la opción, escoge un editor de texto (p. ej, nano)
  4. Ingresa el siguiente comando reemplazando la ubicación de ejemplo por la que te fue provista cuando generaste el certificado:

  5. 52 0,12 * * * root /var/log/letsencrypt/certbot-auto renew --quiet
  6. Open your website to verify it is operational

Nota

Algunas configuraciones de servidores pueden necesitar correr comandos adicionales para poder cargar los nuevos certificados.

Puedes ver la documentación completa referente a renovación de Certbot para obtener mayor información.

Estas organizaciones de caridad están trabajando para ayudar a hacer del Internet un lugar más seguro para todos. Si bien estas herramientas son gratuitas, puedes donar para ayudar tanto a Let's Encrypt como Certbot.

  1. https://letsencrypt.org/donate/
  2. https://supporters.eff.org/donate/support-work-on-certbot
Paso 3
Pasos Finales

HTTPS ya es una opción en tu sitio web, pero la versión HTTP todavía puede ser accesada. Lo ideal es forzar a todos tus visitantes (incluyendo los motores de búsqueda) a ver la versión HTTPS de tu sitio. También deberías tomar algunos pasos para arreglar las advertencias de contenido mixto y actualizar cualquier servicio en la nube basado en un proxy (como firewalls y CDN) para trabajar con tu nuevo certificado SSL.

3.1 - Forzar HTTPS

Para forzar a tus visitantes a acceder tu sitio web a través de HTTPS, puedes editar tu archivo .htaccess. Puedes encontrar este archivo en la raíz de tu sitio web, y puede que necesites mostrar los archivos escondidos para encontrarlo.

Hay otros métodos disponibles para Apache, como utilizar el archivo virtual host. Si utilizas un servidor IIS, puedes seguir las instrucciones para utilizar el Módulo de Sobreescritura de URLs, y los servidores nginx pueden utilizar el archivo de configuración nginx.

Copia esta directiva en el archivo .htaccess para redirigir visitantes de la versión HTTP a la versión HTTPS de tu sitio:

Código - Agregar al Archivo .htaccess

  1. RewriteEngine On
  2. RewriteCond %{HTTPS} off
  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Precaución

Editar el archivo .htaccess puede causar problemas en sitios web con estructuras complejas. La siguiente regla funciona mejor con sitios web hospedados en servidores dedicados o VPS corriendo con Apache.

3.2 - Verifica por Advertencias de Contenido Mixto

Aunque tu sitio ya está disponible sobre HTTPS, puede que todavía tengas recursos en tu sitio que están enlazados sobre HTTP. Esto incluye imágenes, videos y recursos externos.

Los navegadores bloquearán este contenido como “inseguros”, lo que puede romper la funcionalidad de tu sitio y mostrar advertencias de seguridad en los navegadores.

Ejemplos de Advertencias "Inseguras":

Puedes utilizar el mismo acceso SSH que utilizaste para generar el certificado para correr comandos y encontrar cualquier archivo que haga referencia a http://.

Para encontrar los recursos cargándose a través de HTTP, corre el siguiente comando:

        grep -r "http://"
      

Esto listará todos los archivos que tienes que investigar en tu servidor o CMS. Simplemente cambia todas las URLs de estos recursos de http:// a https://, o utiliza una ruta relativa.

También deberías consultar tu base de datos, o buscar de forma manual en publicaciones y páginas contenido siendo cargado a través de HTTP. Hay plugins y extensiones disponibles que te pueden ayudar a automatizar el proceso de reescritura de URLs de HTTP a HTTPS (p. ej. Really Simple SSL para WordPress).

Si el recurso HTTP está alojado en tu mismo sitio web, te recomendamos utilizar una ruta relativa, como por ejemplo:

Ruta Absoluta:

<img src="https://example.com/images/pic.jpg">

Ruta Relativa:

<img src="/images/pic.jpg">

Recursos que Pueden Causar Advertencias de Contenido Mixto:

  • Fuentes Web
  • Contenido en Iframe
  • Archivos JavaScript
  • Hojas de Estilo CSS
  • Imágenes
  • Videos
  • Audios

Precaución

  • Si tu sitio web carga recursos externos, cambiar los links a HTTPS puede romper la funcionalidad. Para evitar esto, asegúrate que el recurso esté disponible sobre HTTPS antes de cambiar la URL en tu código. Puedes acceder a la URL con HTTPS en un navegador web para verificar.
  • Si tienes algún problema, puedes intentar descargar el contenido externo y alojarlo en tu propio servidor, para asegurarte que cargue sobre HTTPS. Primero prueba en un ambiente de pruebas los ejecutables y cualquier contenido que podría comportarse de manera diferente.

3.3 - Optimización para Motores de Búsqueda

Lo último que tienes que hacer es prepararte para cualquier impacto negativo por utilizar HTTPS. Al seguir estos pasos, ayudarás a minimizarlos.

Una vez configurado, agrega y verifica tu nuevo sitio HTTPS en Google Search Console. Esto te permitirá escanear tu sitio web nuevamente e ingresar un nuevo sitemap XML con tus URLs en HTTPS.

Para elementos SEO como “rel=canonical” y etiquetas Open Graph, es aconsejable utilizar la URL absoluta, ya que estas son leídas de manera externa por páginas de redes sociales y escáneres de motores de búsqueda.

Es importante notar que habrá un tiempo de normalización luego de aplicar el certificado SSL, pero al final, está confirmado que es un factor de ranking por Google.

De manera similar, los contadores de intercambio social para contenido antiguo probablemente se convertirán en inválidos. Esto se debe a que ahora hay una nueva URL que comienza con HTTPS en lugar de HTTP, y muchas herramientas cuentan cada una como una URL independiente, y con sus propias métricas.

SEO & Elementos Meta a Verificar

  • rel=canonical
  • rel=alternate
  • rel=next & rel=prev
  • hreflang
  • Etiquetas Open Graph
  • Schema.org
  • Datos Estructurados
  • Sitemaps
  • Enlaces Internos

3.4 - Advertencias de Seguridad de Sitios Web

HTTPS es una maravilla para el Internet, mantiene las comunicaciones en secreto entre los usuarios y los sitios web que visitan. SSL asegura la información en tránsito, pero no asegura tu sitio web en sí.

La seguridad de sitios web va mucho más allá de solamente HTTPS/SSL, y debería ser tratada como tal. Piensa que HTTPS/SSL es nada más uno de muchos controles de seguridad a considerar cuando pienses sobre la seguridad de tus sitios web. Desplegar HTTPS/SSL en tu sitio web, pero no tomar ninguna otra acción para asegurar tu entorno hará muy poco para garantizar que tus visitantes estén seguros.

Motivamos a los propietarios de sitios web a que piensen en la seguridad de sitios web de manera holística, y que consideren obtener una Plataforma de Seguridad de Sitios Web que ofrezca una gama de controles de seguridad: protección, detección, monitoreo y respuesta a incidentes. Si tienes más preguntas sobre cómo funcionan estas plataformas, o preguntas sobre esta publicación, por favor escríbenos a la siguiente dirección: info@sucuri.net.

Contáctanos