¿Cómo funcionan los certificados HTTPS / SSL gratuitos de LetsEncrypt?

Let’s Encrypt emite certificados SSL de forma gratuita, que se utilizan para proteger y cifrar el tráfico en su sitio web, y le dan el candado verde en la barra de URL. Sin uno, estará atascado con HTTP, que no es muy seguro.

¿Qué es un certificado HTTPS / SSL?

Cuando alguien se conecta a su sitio web, el navegador de esa persona le pide a su sitio web que se identifique, para asegurarse de que nadie se entromete en su conexión. Lo hace con un certificado SSL, que le proporciona una autoridad de certificación (CA).

La CA realiza un seguimiento de su nombre de dominio y lo asocia con su llave pública, utilizado para el cifrado. Todos los que se conecten a su sitio web pueden ver que está utilizando la clave correcta para cifrar el tráfico de su sitio web, por lo que debe ser quien dice ser. Mientras todos confíen en la CA, nadie malintencionado puede falsificar nuevos certificados SSL, ya que serán firmados por la CA y solo ellos podrán emitirlos.

Esto significa que mientras tenga un certificado SSL, nadie puede espiar las conexiones de las personas mientras usan su sitio web o puede hacerse pasar por su sitio web. Esto hace que HTTPS sea muy útil y mucho más seguro. Con el surgimiento de Let’s Encrypt, 93% del tráfico web (a través de Google) ahora es HTTPS, y si su sitio web no lo es, tendrá una clasificación mucho más baja en los resultados de búsqueda de Google.

¿En qué se diferencia Let’s Encrypt?

Let’s Encrypt es de uso totalmente gratuito. Esto es inusual para una CA, ya que la mayoría de ellos requieren que pague cientos de dólares por año. Esta es la principal ventaja de Let’s Encrypt: si no necesita nada sofisticado, puede proteger fácilmente su sitio web con HTTPS.

Sin embargo, Let’s Encrypt tiene algunas desventajas. Sus certificados solo son válidos por 90 días, pero puede automatizar la renovación de ellos, por lo que no es un factor decisivo. También ofrecen solo certificados de validación de dominio (DV), que simplemente protegen su dominio. No ofrecen certificados de validación de organización (OV), que requieren que registre su empresa junto con ellos, y no ofrecen certificados de validación extendida (EV), que requieren un proceso de investigación exhaustivo y mostrarán el nombre de su empresa en la URL bar.

Certificado EV para PayPal.

Sin embargo, no hay muchos beneficios para un certificado OV, y probablemente no necesite un certificado EV a menos que esté dirigiendo un banco o una institución importante, en cuyo caso probablemente pueda ahorrar el dinero. Incluso Amazon no tiene un certificado EV.

Para la mayoría de las personas, si no le importa tener que renovar su certificado cada 90 días, hoy en día realmente no tiene mucho sentido tener algo más elegante que LetsEncrypt.

Cómo configurar certificados Let’s Encrypt

Necesitará tener acceso a la línea de comandos al servidor en el que desea instalar un certificado SSL. Alternativamente, si tiene un proveedor de alojamiento administrado como SquareSpace, su host puede admitir Let’s Encrypt, y algunos lo tienen habilitado de forma predeterminada. Otros, como GoDaddy, incluyen SSL como parte de sus planes de pago y pueden bloquearle el uso de opciones alternativas. Usted puede verificar si su proveedor está en la lista y cómo habilitar Let’s Encrypt si lo es. En este artículo, nos centraremos en la configuración manual que se ejecuta en su propio servidor web.

Para obtener un certificado, debe usar un cliente ACME, un programa que hablará con Let’s Encrypt por usted y verificará que su nombre de dominio sea legítimo. Let’s Encrypt recomienda usar certbot, una utilidad de línea de comandos que creará certificados para usted, pero también los instalará automáticamente en el servidor web que está utilizando.

Si no desea que certbot se meta con sus archivos de configuración nginx o Apache, puede generar manualmente un certificado con un diferente cliente ACME. Tendrá que agregarlo manualmente a su config, y tendrás que gestionar la renovación del certificado cada 90 días (lo que puedes hacer automáticamente, solo tendrás que configúrarlo tú mismo). Para la mayoría de las personas, Certbot funcionará bien.

Instalación y uso de Certbot

La instalación variará según el sistema operativo que esté ejecutando, pero Certbot solo se ejecuta en sistemas Unix, por lo que no Windows. Por lo general, es tan simple como instalarlo desde el administrador de paquetes de su distribución. Para sistemas basados ​​en Debian como Ubuntu, eso sería:

sudo apt-get install certbot

Aunque tendrá que agregar el repositorio certbot a su administrador de paquetes. Por suerte, el sitio web de Certbot tiene instrucciones de instalación más completas para cada distribución. Seleccione qué servidor web está utilizando y en qué sistema operativo lo está ejecutando. Certbot le dará una lista de comandos para instalar los paquetes necesarios; ejecútelos y espere a que se instale.

Cuando haya terminado, querrá ejecutar:

sudo certbot --nginx

Reemplazo del –nginx flag con cualquier servidor web que esté utilizando. Certbot generará un nuevo certificado y lo instalará en su configuración de nginx. De hecho, puede ejecutar Certbot como un cliente ACME manual con:

sudo certbot --nginx certonly

Esto generará un archivo de certificado que puede implementar manualmente en su servidor web.

Certbot hará gestionar automáticamente la renovación en la mayoría de las distribuciones con temporizadores cron o systemd, por lo que no tendrá que preocuparse por que caduque. Este trabajo cron generalmente se encuentra en /etc/cron.d/certbot si desea asegurarse.

Una cosa a tener en cuenta es que este trabajo cron solo ejecuta la renovación de certbot una vez que está hecho, lo que no reiniciará automáticamente su servidor web para aplicar la nueva configuración. Puede adjuntar un comando adicional a este trabajo cron con –renew-hook, y pasarle un comando para recargar nginx así:

certbot renew --renew-hook "/etc/init.d/nginx reload"

También puede renovar manualmente sus certificados directamente desde la línea de comando con:

sudo certbot renew

Deberá reiniciar su servidor web después de esto también.

Manejo del tráfico HTTPS

HTTPS funciona de forma un poco diferente al HTTP normal. El puerto HTTP predeterminado es 80, que generalmente está abierto en servidores web. HTTPS se ejecuta en el puerto 443, por lo que deberá asegurarse de que este puerto esté abierto en cualquier firewall que pueda tener para que HTTPS funcione.

Además, probablemente querrá bloquear todo el tráfico HTTP ahora que tiene HTTPS. Puedes hacer esto con una regla nginx:

server {
    listen 80 default_server;

    server_name _;

    return 301 https://$host$request_uri;
}

Esto redirigirá todo el tráfico del puerto 80 a un enlace HTTPS. Esto reemplaza el servidor del puerto 80 predeterminado, así que asegúrese de que no se esté ejecutando nada más en ese puerto.

Comparte en: