thiagoalmeidasa.certbot_route53

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 la sección Instalación desde el código fuente de Git) ofrece una mejor experiencia al usar 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 instala Certbot desde Git o desde un gestor de paquetes. Esto último es lo predeterminado, por lo que la variable por defecto es no.

certbot_auto_renew: true
certbot_auto_renew_user: root
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 de cron para ejecutarse bajo la cuenta de usuario proporcionada a la hora y minuto dados, todos los días. Los valores predeterminados ejecutan certbot renew (o certbot-auto renew) a través de cron todos los días a las 03:30 por el usuario que utilizas en tu playbook de Ansible. Se recomienda que establezcas un usuario/hora/minuto personalizado para que la renovación se realice en un período de bajo tráfico y por una cuenta de usuario que no sea root.

Generación Automática de Certificados

Actualmente hay un método integrado para generar nuevos certificados usando este rol: standalone. Otros métodos (por ejemplo, usando nginx o apache con un webroot) pueden ser añadidos 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: certonly

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

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. Esta debe ser personalizada y configurada a una dirección de correo que tú o tu organización monitorean regularmente.

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

Una lista de dominios (y otros datos) para los cuales se deben generar certificados. Puedes agregar una clave email a cualquier elemento 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 usado para generar el certificado.

Instalación desde el código fuente de Git

Puedes instalar Certbot desde su repositorio de Git si lo deseas. Esto puede ser útil en varios casos, pero especialmente cuando distribuciones 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 Git de Certbot. Para instalar desde el código fuente, configura certbot_install_from_source a yes. Esto clona el certbot_repo configurado, respetando la configuración de certbot_version. Si certbot_keep_updated se establece en yes, el repositorio se actualiza cada vez que se ejecuta este rol.

certbot_dir: /opt/certbot

El directorio en el que se clonará Certbot.

Certificados Wildcard

Let's Encrypt admite la generación de 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 un tutorial sobre Cómo 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:
    - thiagoalmeidasa.certbot_route53

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 de "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 el código fuente/Git. Aquí hay algunos comandos de ejemplo para configurar certificados con Certbot:

# Añadir 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 quieres automatizar completamente el proceso de añadir un nuevo certificado, pero no deseas usar la funcionalidad incorporada de este rol, puedes hacerlo usando las opciones de línea de comandos para registrarte, aceptar los términos de servicio y luego generar un certificado usando el servidor standalone:

  1. Asegúrate de que cualquier servicio que escuche en los puertos 80 y 443 (Apache, Nginx, Varnish, etc.) esté detenido.
  2. Regístrate con algo como certbot register --agree-tos --email [[email protected]] - Nota: No necesitarás hacer 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 cualquier servicio 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 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 utilice la nueva configuración de virtualhost HTTPS.

Renovación automática de certificados de Certbot

Por defecto, este rol agrega un trabajo de 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

Instalar
ansible-galaxy install thiagoalmeidasa.certbot_route53
Licencia
mit
Descargas
4.9k
Propietario
Linux, open source, containers, docker. Nerd, with a big interest in the philosophical, biological, social, and cultural aspects of human life.