ussrlongbow.certbot

Rol de Ansible: Certbot (para Let's Encrypt)

Estado de Construcción

Instala y configura Certbot (para Let's Encrypt).

Requisitos

Si se instala desde el código fuente, se requiere Git. Puedes instalar Git usando el rol geerlingguy.git.

Generalmente, instalar desde el código fuente (ver sección Instalación desde Código Fuente) proporciona una mejor experiencia usando Certbot y Let's Encrypt, especialmente si estás usando una versión antigua del sistema operativo.

Variables del Rol

La variable certbot_install_from_source controla si se debe instalar Certbot desde Git o desde el gestor de paquetes. Este último es el valor por defecto, así que la variable predeterminada es no.

certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user | default(lookup('env', 'USER')) }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30
certbot_auto_renew_options: "--quiet --no-self-upgrade"

Por defecto, este rol configura un trabajo cron para ejecutarse bajo la cuenta de usuario proporcionada a la hora y minuto indicados, todos los días. De forma predeterminada, ejecuta certbot renew (o certbot-auto renew) a través de cron todos los días a las 03:30:00, por el usuario que utilizas en tu playbook de Ansible. Se prefiere que configures un usuario/hora/minuto personalizados para que la renovación ocurra en un período de baja actividad y sea hecha por una cuenta de usuario que no sea root.

Generación Automática de Certificados

Actualmente hay un método incorporado para generar nuevos certificados usando este rol: standalone. Se pueden agregar otros métodos (por ejemplo, usando nginx o apache y un webroot) en el futuro.

Para un ejemplo completo: consulta el playbook de prueba completamente funcional en molecule/default/playbook-standalone-nginx-aws.yml.

certbot_create_if_missing: false
certbot_create_method: standalone

Establece certbot_create_if_missing a yes o True para permitir que este rol genere certificados. Establece el método usado para generar certificados con la variable certbot_create_method: los valores permitidos actuales incluyen: standalone.

certbot_admin_email: email@example.com

La dirección de correo electrónico utilizada para aceptar los Términos de Servicio de Let's Encrypt y suscribirse a notificaciones relacionadas con certificados. Esto debe personalizarse y configurarse con una dirección de correo electrónico que tú o tu organización monitoreen regularmente.

certbot_certs: []
  # - email: [email protected]
  #   domains:
  #     - example1.com
  #     - example2.com
  # - domains:
  #     - example3.com

Una lista de dominios (y otros datos) para los que se deben generar certificados. Puedes agregar una clave email para cualquier ítem de la lista para anular el certbot_admin_email.

certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"

El certbot_create_command define el comando utilizado para generar el certificado.

Generación de Certificados de Forma Independiente

certbot_create_standalone_stop_services:
  - nginx

Servicios que deben detenerse mientras certbot ejecuta su propio servidor independiente en los puertos 80 y 443. Si estás ejecutando Apache, configura esto como apache2 (Ubuntu), o httpd (RHEL), o si tienes Nginx en el puerto 443 y algo más en el puerto 80 (por ejemplo, Varnish, una aplicación Java, o algo más), agrégalo a la lista para que se detenga cuando se genere el certificado.

Estos servicios solo se detendrán la primera vez que se genere un nuevo certificado.

Instalación desde Código Fuente de Git

Puedes instalar Certbot desde su repositorio de código fuente de Git si lo deseas. Esto puede ser útil en varios casos, pero especialmente cuando las distribuciones más antiguas no tienen paquetes de Certbot disponibles (por ejemplo, CentOS < 7, Ubuntu < 16.10 y Debian < 8).

certbot_install_from_source: false
certbot_repo: https://github.com/certbot/certbot.git
certbot_version: master
certbot_keep_updated: true

Opciones del repositorio de Git de Certbot. Para instalar desde el código fuente, establece certbot_install_from_source a yes. Esto clona el certbot_repo configurado, respetando la configuración de certbot_version. Si certbot_keep_updated está configurado en yes, el repositorio se actualiza cada vez que se ejecuta este rol.

certbot_dir: /opt/certbot

El directorio dentro del cual se clonará Certbot.

Certificados Wildcard

Let's Encrypt soporta generar certificados wildcard, pero el proceso para generarlos y usarlos es un poco más complicado. Consulta los comentarios en esta solicitud de extracción para un ejemplo de cómo usar este rol para mantener certificados wildcard.

Michael Porter también tiene una guía sobre Crear un Certificado Wildcard de Let's Encrypt con Ansible, específicamente con Cloudflare.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: servers

  vars:
    certbot_auto_renew_user: tu_nombre_de_usuario_aquí
    certbot_auto_renew_minute: 20
    certbot_auto_renew_hour: 5

  roles:
    - geerlingguy.certbot

Consulta otros ejemplos en el directorio tests/.

Creación Manual de Certificados con Certbot

Nota: Puedes hacer que este rol genere certificados automáticamente; consulta la documentación sobre "Generación Automática de Certificados" arriba.

Puedes crear certificados manualmente usando el script certbot (o certbot-auto) (usa letsencrypt en Ubuntu 16.04, o usa /opt/certbot/certbot-auto si instalaste desde código fuente/Git). Aquí hay algunos comandos de ejemplo para configurar certificados con Certbot:

# Agregar automáticamente certificados para todos los virtualhosts de Apache (¡usar con precaución!).
certbot --apache

# Generar certificados, pero no modificar la configuración de Apache (más seguro).
certbot --apache certonly

Si deseas automatizar completamente el proceso de agregar un nuevo certificado, pero no quieres utilizar la funcionalidad incorporada de este rol, puedes hacerlo utilizando las opciones de línea de comandos para registrarte, aceptar los términos de servicio y luego generar un certificado utilizando el servidor independiente:

  1. Asegúrate de que todos los servicios que escuchan en los puertos 80 y 443 (Apache, Nginx, Varnish, etc.) estén detenidos.
  2. Regístrate con algo como certbot register --agree-tos --email [[email protected]]
    • Nota: No necesitarás realizar este paso en el futuro, al generar certificados adicionales en el mismo servidor.
  3. Genera un certificado para un dominio cuyo DNS apunte a este servidor: certbot certonly --noninteractive --standalone -d ejemplo.com -d www.ejemplo.com
  4. Reinicia lo que estaba escuchando en los puertos 80 y 443 antes.
  5. Actualiza la configuración TLS del virtualhost de tu servidor web para apuntar al nuevo certificado (fullchain.pem) y a la clave privada (privkey.pem) que Certbot acaba de generar para el dominio que pasaste en el comando certbot.
  6. Recarga o reinicia tu servidor web para que use la nueva configuración del virtualhost HTTPS.

Renovación Automática de Certificados con Certbot

Por defecto, este rol agrega un trabajo cron que renovará todos los certificados instalados una vez al día a la hora y minuto que elijas.

Puedes probar la renovación automática (sin realmente renovar el certificado) con el comando:

/opt/certbot/certbot-auto renew --dry-run

Consulta la documentación completa y las opciones en el sitio web de Certbot.

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2016 por Jeff Geerling, autor de Ansible for DevOps.

Acerca del proyecto

Installs and configures Certbot (for Let's Encrypt).

Instalar
ansible-galaxy install ussrlongbow.certbot
Licencia
mit
Descargas
6.9k
Propietario