GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo administrar los certificados Lets Encrypt SSL/TLS con certbot

Vamos a cifrar es una autoridad de certificación (CA) automatizada y abierta operada por Internet Security Research Group (ISRG) y fundada por Electronic Frontier Foundation (EFF), Mozilla Foundation y otros. Proporciona certificados SSL/TLS gratuitos que se ​​usan comúnmente para cifrar las comunicaciones por motivos de seguridad y privacidad, siendo el caso de uso más notable HTTPS. Let's Encrypt se basa en el protocolo ACME (Entorno de gestión automática de certificados) para emitir, revocar y renovar certificados. Certbot es una utilidad gratuita y de código abierto que se utiliza principalmente para administrar certificados SSL/TLS de Let's Encrypt Autoridad certificada. Está disponible para la mayoría de los sistemas operativos UNIX y similares a UNIX, incluidos GNU/Linux, FreeBSD, OpenBSD y OS X. Esta guía proporcionará una introducción independiente de la plataforma al uso de certbot.

NOTA: Como certbot es un trabajo en progreso, algunas funciones o comportamientos descritos en esta guía pueden diferir en versiones anteriores o futuras.

Requisitos

  • Un nombre de dominio registrado con un registro A que apunta a su dirección IPv4. `www.example.com` se usará como ejemplo.
  • Acceso a un shell privilegiado.

Conceptos Generales

Modos de operación

El uso de certbot para habilitar HTTPS se puede dividir en dos partes:autenticación e instalación. El primero requiere resolver un desafío y guardar el certificado y otros archivos. El paso de instalación implica configurar y asegurar el servidor web. Certbot puede realizar ambos automáticamente, con el subcomando ejecutar. Los subcomandos certonly e install son para los pasos de autenticación e instalación respectivamente.

Certbot también incluye funciones de renovación y revocación de certificados.

Desafíos

Obtener un certificado de Let's Encrypt implica resolver un desafío de validación de dominio emitido por un servidor ACME (Automatic Certificate Management Environment). Este desafío verifica su propiedad de los dominios para los que está tratando de obtener un certificado. Existen diferentes tipos de desafíos, siendo el más utilizado HTTP-01. Como su nombre indica, utiliza el protocolo HTTP. Si bien los servidores HTTP se pueden configurar para usar cualquier puerto TCP, este desafío solo funcionará en el puerto 80 debido a medidas de seguridad. DNS-01 es otro tipo de desafío menos popular basado en la resolución de DNS. Tenga en cuenta que los certificados comodín no se pueden obtener a través del desafío HTTP-01. Esta guía se centrará inicialmente en HTTP-01.

Complementos

Certbot se basa en complementos para realizar la autenticación y la instalación. Los complementos como webroot e independiente solo realizan la autenticación, mientras que otros, como los complementos de Apache y Nginx, están diseñados para obtener e instalar certificados automáticamente (es decir, la configuración del servidor web). Otros complementos incluyen varios complementos DNS específicos del proveedor para la autenticación DNS-01. La mayoría de los complementos de certbot se instalan por separado, excepto los complementos webroot e independientes que están integrados.

Instalando Certbot

La mayoría de las distribuciones de Linux proporcionan certbot en sus repositorios oficiales. A continuación se encuentran las instrucciones de instalación para plataformas ampliamente utilizadas.

Debian y Ubuntu:

apt update
apt install -y certbot

CentOS 7:

yum install -y certbot

Fedora y CentOS 8:

dnf install -y certbot

Arco Linux:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 y posterior:

pkg_add certbot

MacOS (se requiere homebrew):

brew install letsencrypt

Otro:

Si un paquete de certbot no está disponible para su plataforma, puede usar el script oficial de envoltura automática de certbot para instalar certbot automáticamente en su sistema. Se puede descargar aquí.

Usando Certbot

Listado de certificados

Para mostrar una lista de los certificados administrados por certbot en su servidor, emita el comando:

certbot certificates

Obtención de un certificado para configuración manual

Si elige configurar manualmente su servidor web, puede obtener un certificado de dos maneras. Ya sea dando acceso a certbot al directorio raíz web de su servidor (es decir, el complemento webroot), o implementando un servidor web independiente temporal en el puerto 80 (es decir, el complemento independiente). El último complemento es útil en los casos en que la integración con su servidor web existente es imposible o no se desea. Para mayor comodidad y renovaciones más sencillas, sea coherente con el complemento utilizado.

Uso de un servidor web existente

Para usar su servidor web existente, asegúrese de que se esté ejecutando y escuchando en el puerto 80 antes de ejecutar el siguiente comando

certbot certonly --webroot

Se le pedirá que ingrese, entre otra información, su(s) nombre(s) de dominio y la ruta a su webroot, que es `/var/www/html/` por defecto en la mayoría de los sistemas Linux. Alternativamente, puede especificar la información requerida como argumentos de comando. Por ejemplo:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m [email protected] -d www.example.com

Uso del servidor web independiente

Para utilizar el servidor independiente, primero asegúrese de la disponibilidad del puerto 80. Puede comprobar si hay algún proceso vinculado a ese puerto mediante:

ss -lntp 'sport = 80'

Si es necesario, detenga el servicio/proceso infractor antes de continuar. Luego, emita el comando:

certbot certonly --standalone

Una vez que se emite el certificado, deberá configurar su servidor web manualmente. Los archivos relevantes se pueden encontrar en /etc/letsencrypt/live/your_domain.

Instalación interactiva de HTTPS

Como se mencionó anteriormente, certbot puede automatizar todo el proceso de configuración de HTTPS, incluida la configuración del servidor web. Los complementos están disponibles tanto para Apache como para Nginx, y es posible que deban instalarse como un paquete separado. Instale el complemento de certbot específico para su servidor web, luego ejecute `certbot run --PLUGIN_NAME`. Demostraremos todo el proceso para Apache en un sistema Debian 10. El proceso para Nginx es similar.

apt install -y python-certbot-apache
certbot run --apache

Suponiendo que su servidor web ya esté configurado para su(s) nombre(s) de dominio, certbot analizará la configuración existente y le pedirá que elija para qué nombre(s) de dominio debe activarse HTTPS. Si su servidor web no está configurado, o si certbot no detecta su(s) nombre(s) de dominio, simplemente ingrese su(s) nombre(s) de dominio manualmente cuando se le solicite. Por ejemplo:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot creará un nuevo archivo de configuración de Apache para su nuevo host virtual HTTPS y le preguntará si el tráfico HTTP debe redirigirse a HTTPS. A menos que tenga motivos fundados para no hacerlo, debe habilitar la redirección 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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Renovación de certificados

Renovación manual

Para renovar sus certificados con certbot, puede usar el subcomando de renovación. Durante la renovación, certbot utilizará los mismos complementos y opciones utilizados para la emisión original. Los certificados solo se renuevan si caducan en menos de 30 días, por lo que este subcomando se puede utilizar con la frecuencia deseada, ya que no realizará ninguna acción si los certificados no están próximos a su fecha de caducidad. El comando es simplemente:

certbot renew

Si se utilizó el complemento independiente para emitir un certificado, deberá detener su servidor web para que la renovación tenga éxito. Puedes lograr eso usando ganchos. Por ejemplo, si el sistema ejecuta Apache, el comando sería:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Renovación automática

Muchas distribuciones han habilitado renovaciones automáticas de forma predeterminada, ya sea a través de temporizadores systemd o trabajos cron. Puede verificar los temporizadores de systemd con:

systemctl list-timers

Y para trabajos cron usando:

ls /etc/cron*

Si se usó el complemento webroot para la emisión, las renovaciones automáticas deberían tener éxito siempre que su servidor web esté funcionando. Sin embargo, con el complemento independiente, el comando de renovación automática predeterminado fallará en caso de que se esté ejecutando un servidor web, ya que certbot no podrá vincularse al puerto 80. Por lo tanto, es necesario modificarlo con la adición de ganchos, como se muestra arriba.

Revocación de certificados

Se puede revocar un certificado especificando la ruta o el nombre del certificado:

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Por ejemplo:

certbot revoke --cert-name www.example.net

Después de ejecutar el subcomando revocar, certbot preguntará si se deben eliminar los archivos de certificado. Si elige no eliminarlos, el certificado revocado se renovará durante la próxima renovación. Se pueden pasar varias opciones autoexplicativas al subcomando revocar:

  • --delete-after-revocate (solicita la elección del usuario de forma predeterminada)
  • --no-delete-after-revocate (solicita la elección del usuario de forma predeterminada)
  • --motivo [no especificado, compromiso clave, cambio de afiliación, reemplazado, cese de operación] (Predeterminado:no especificado)

Certificados comodín

Se puede usar un solo certificado comodín para identificar varios subdominios, como alternativa a los certificados regulares separados. Para obtener un certificado comodín, se debe utilizar el desafío DNS-01. Si bien hay disponibles varios complementos específicos del proveedor que automatizan el proceso de autenticación ACME, explicaremos el proceso manual e independiente del proveedor. Se necesita acceso a los servidores de nombres para su dominio.

Utilice el siguiente comando para solicitar un certificado comodín:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot mostrará un valor que debe implementarse en un registro DNS TXT. Este registro TXT sirve como la validación de propiedad necesaria.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Deberá crear el registro especificado en su panel de control de DNS antes de continuar. Una vez que se crea el registro, espere unos minutos antes de presionar Enter, lo que activa el servidor ACME para verificarlo. En algunos casos, es posible que se requiera un tiempo de espera más largo para que el nuevo registro se propague correctamente y sea accesible. En caso de éxito, el certificado, la cadena y la clave privada se guardarán en /etc/letsencrypt/live/example.com/.

Referencias e Información Adicional

  • Repositorio oficial de Certbot Github
  • Entorno de gestión automática de certificados (ACME) RFC 8555
  • Documentación de EFF Certbot
  • Página del manual de Certbot(1)

Linux
  1. Cómo proteger sus servicios de correo electrónico de Linux con SSL/TLS

  2. Cómo asegurar una cuenta habilitada para cPanel con un certificado Lets Encrypt SSL

  3. Protección de ISPConfig 3.1 con un certificado SSL gratuito de Lets Encrypt

  4. Cómo proteger el nombre de host de Plesk en el puerto 8443 con certificado SSL

  5. Cómo asegurar conexiones con certificados SSL/TLS

Cómo instalar Let's Encrypt SSL con LEMP en AlmaLinux 8

Cómo renovar automáticamente los certificados Let's Encrypt SSL

Cómo instalar Let's Encrypt SSL con Apache en CentOS 7

Cómo proteger Apache con el certificado Let's Encrypt SSL en CentOS 8

Cómo monitorear certificados SSL/TLS con Checkmk

Cómo proteger Nginx con el certificado SSL de Let's Encrypt