Certificados Let's Encrypt SSL/TLS con certbot

Let's Encrypt es una autoridad de certificación (CA) automatizada y abierta operada por Internet Security Research Group (ISRG) y fundada por la Electronic Frontier Foundation (EFF). Proporciona certificados SSL/TLS gratuitos que se utilizan comúnmente para cifrar las comunicaciones con fines de seguridad y privacidad, el caso de uso más notable es HTTPS. Let's Encrypt se basa en el protocolo ACME (Automatic Certificate Management Environment) 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 la autoridad de certificación Let's Encrypt. Está disponible para la mayoría de los sistemas operativos UNIX, incluidos GNU/Linux, FreeBSD, OpenBSD y OS X. Esta guía proporcionará una introducción independiente de la plataforma para el uso de certbot.

Requisitos

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

Conceptos generales

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

Reto
Obtener un certificado Let's Encrypt implica resolver un reto de validación de dominio emitido por un servidor ACME (Entorno automático de administración de certificados). Este reto verifica la propiedad de los dominios para los que está tratando de obtener un certificado. Existen diferentes tipos de retos, el más utilizado es HTTP-01. Como su nombre lo indica, utiliza el protocolo HTTP. Si bien los servidores HTTP se pueden configurar para usar cualquier puerto TCP, este reto solo funcionará en el puerto 80 debido a las medidas de seguridad. DNS-01 es otro tipo de reto menos popular basado en la resolución DNS. Tenga en cuenta que los certificados comodín no se pueden obtener a través del reto 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 y autónomos solo realizan la autenticación, mientras que otros como los complementos Apache y Nginx están diseñados para obtener e instalar automáticamente certificados (eso quiere 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 certbot se instalan por separado, excepto el webroot y los complementos independientes que están integrados.

Instalar 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.

yum install -y certbot

Usando Certbot

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

certbot certificates

Obtención de un certificado para la configuración manual

Si elige configurar manual en su servidor web puede obtener un certificado de dos maneras. O bien otorgando acceso 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 simples sea coherente con el complemento utilizado.

Usar 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 nombre de dominio (s) y la ruta a su raíz web 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 your_email@example.com -d www.example.com

Usando el servidor web independiente

Para utilizar el servidor independiente primero asegúrese de la disponibilidad del puerto 80. Puede verificar los procesos vinculados a ese puerto usando el comando:

ss -lntp 'sport = 80'

Si es necesario detenga el servicio/proceso activo antes de continuar. Luego ejecute el siguiente comando:

certbot certonly --standalone

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

Instalación interactiva HTTPS
Como habíamos mencionado 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 certbot específico para su servidor web, luego ejecute `certbot run --PLUGIN_NAME`. Mostraremos todo el proceso para Apache en un sistema centOs 7. El proceso para Nginx es similar.

yum install -y python-certbot-apache

certbot run --apache

Suponiendo que su servidor web ya esté configurado para su nombre de dominio (s), certbot analizará la configuración existente y le pedirá que elija para qué nombre de dominio HTTPS debe activarse. Si su servidor web no está configurado o si certbot no puede detectar sus nombres de dominio simplemente ingrese sus nombres 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 ser redirigido a HTTPS. A menos que tenga buenas razones 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 renovar. 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 el siguiente comando se puede usar con la frecuencia deseada ya que no tomará ninguna medida si los certificados no están cerca de su fecha de vencimiento. Ejecute el comando sigueinte para la renovación de nombre de dominios web:

certbot renew

Si el complemento independiente se utilizó para ejecutar un certificado deberá detener su servidor web para que la renovación se realice correctamente. Puede 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 permitido renovaciones automáticas por defecto ya sea a través de temporizadores systemd o trabajos cron. Puede verificar los temporizadores systemd con:

systemctl list-timers

Y para trabajos cron usando:

ls /etc/cron*

Si el complemento webroot se usó para la emisión, las renovaciones automáticas deberían tener éxito siempre que su servidor web se esté ejecutando. 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 con la ruta o el nombre del certificado:

certbot revoke --cert-name cert_name

(O)

certbot revoke --cert-path /path/to/cert.pem

Ejemplo:

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

Después de ejecutar el subcomando revocar certbot le 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-revoke (solicita la elección del usuario por defecto)
--no-delete-after-revoke (solicita la elección del usuario por defecto)
--reason [unspecified,keycompromise,affiliationchanged,superseded,cessationofoperation] (Predeterminado: sin especificar)

Certificados comodín

Se puede usar un solo certificado comodín para identificar múltiples subdominios como una alternativa para separar los certificados regulares. Para obtener un certificado comodín se debe utilizar el reto DNS-01. Si bien hay disponibles varios complementos específicos del proveedor que automatizan el proceso de autenticación de ACME explicaremos el proceso manual y neutral del proveedor. Se necesita acceso a los servidores de nombres para su dominio.

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

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Implemente un registro TXT de DNS con el nombre
_acme-challenge.example.com y con el siguiente valor:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Antes de continuar, verifique que el registro esté creado.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presione Enter para continuar

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 puede ser necesario un tiempo de espera más largo para que el nuevo registro se propague correctamente y sea accesible. Tras el éxito de activación del certificado la cadena y la clave privada se guardarán en /etc/letsencrypt/live/example.com/.

¿Fue útil la respuesta?

Artículos Relacionados

Monitorización en centOs 7

Netdata es una herramienta de código abierto para visualizar y monitorear en tiempo real el...

Antivirus en CentOS 7

Es una muy buena alternativa contar con un antivirus en nuestro servidor de Linux, con la...

Firewalld Linux

Como inicial, reiniciar o ver estado del firewall de Linux Firewall es una herramienta de...

Como configurar IPtable en RHEL/CentOS 7

Configuración IPtable en RHEL/CentOS 7 IPtables es un programa de utilidad de espacio de usuario...