inofix.acme-setup

Configuración de Acme

Este es un rol de Ansible para configurar y preparar todo lo necesario para luego firmar certificados con Let's Encrypt, es decir, instalar el usuario, los directorios y scripts relevantes, y ajustar los permisos correctamente.

Este rol está destinado a ser ejecutado en cualquier host que necesite certificados para sí mismo o que firme certificados para otros hosts.

Consulta inofix.acme-request para la creación de la clave privada y las solicitudes de certificados, así como la instalación de una solicitud creada de forma remota en un host de "firma" o "proxy de certificados".

El rol inofix.acme-tiny-install instala el script acme-tiny en los hosts de "firma".

Los roles inofix.acme-tiny-sign y inofix.acme-tiny-cron se encargan de la firma real (o periódica) en los hosts de "firma".

Cualquier host que firme certificados con el servicio Let's Encrypt requiere un servidor web escuchando en el puerto 80 y resolviendo /.well-known/acme-challenge al directorio accesible para la herramienta de firma. Consulta inofix.acme-sign para un ejemplo.

Los hosts que dependen de otros para hacer la firma (por ejemplo, no tienen instalado un servicio web) pueden acceder y transferir los certificados firmados listos desde su host proxy con inofix.acme-proxy.

Consulta "Descripción general / Concepto" a continuación para más detalles.

El desarrollo de este rol comenzó como zwischenloesung.acme-tiny-setup.

¿Por qué no usamos uno de los roles existentes?

  • Por la primera razón, lee la sección "Promesa" a continuación. Necesitamos algo confiable.
  • Este rol será utilizado por maestro y debe seguir la lógica empleada allí. (Por supuesto, el rol puede usarse sin maestro..)

Estado

preSTABLE (Congelación de características/RC)

Promesa

Claro, este rol puede cambiar en el futuro, pero solo ampliaremos las funciones para no romper la compatibilidad hacia atrás.

Si se requieren cambios radicales, se creará un nuevo rol, probablemente con un sufijo de versión...

Instalación

# ansible-galaxy install inofix.acme-setup

Requisitos

  • Ansible >2.0
  • Python2/3 en el host objetivo
  • UNIX genérico con FHS
  • Sudo
  • Systemd (por defecto)

Descripción general / Concepto

Dado que este es realmente el rol central y el único que se necesita en cualquier host involucrado, se proporciona una visión general en este README.

Perspectiva del rol

  • inofix.acme-setup
    • ejecutarse en cualquier host
    • configurar el entorno
      • crear el usuario 'acme'
      • crear claves, etc.
        • /etc/ssl/acme
          • scripts
          • servicios conectados
        • /var/log/acme
          • registros
        • /var/lib/acme
          • hogar para el usuario que firma y copia certificados
  • inofix.acme-request
    • ejecutarse en hosts que usan o firman un certificado
    • en hosts que usan un certificado
      • crear la clave privada
      • crear una solicitud de certificado (csr)
    • en hosts proxy
      • instalar la csr de hosts "fuera de línea"
  • inofix.acme-tiny-install
    • ejecutarse en hosts que firman certificados con Let's Encrypt
    • instalar el script acme-tiny.py
  • inofix.acme-tiny-sign
    • ejecutarse en hosts que firman certificados con Let's Encrypt
      • solo necesita la csr: ni siquiera se lee la clave privada (o falta para proxy)
    • usar acme-tiny.py para pedir a Let's Encrypt que firme un certificado para la csr
  • inofix.acme-tiny-cron
    • ejecutarse en hosts que firman certificados con Let's Encrypt
      • solo necesita la csr: ni siquiera se lee la clave privada (o falta para proxy)
    • instalar un trabajo cron para realizar la parte de firma (como en inofix.acme-tiny-sign)
  • inofix.acme-proxy
    • ejecutarse en hosts que usan un certificado pero no realizan la firma ellos mismos (por ejemplo, correo/jabber/..)
    • copiar el certificado desde un host remoto (que realizó la firma)
  • inofix.acme-service-..
    • ejecutarse en todos los hosts que usan un certificado (es decir, ejecutando un servicio certificado...)
    • registrar un servicio para reiniciarlo si ha cambiado algún certificado

Perspectiva del host

  • Un host que actúa solo como un host de firma y no tiene servicios que utilicen los certificados necesitará ejecutar estos roles:
    • inofix.acme-setup (este rol)
    • inofix.acme-tiny-install
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (para repetir automáticamente la firma una vez al mes)
  • Un host que solo utiliza los certificados, pero no solicita directamente la firma con Let's Encrypt necesitará ejecutar estos roles:
    • inofix.acme-setup (este rol)
    • inofix.acme-request
    • inofix.acme-proxy (para obtener automáticamente los certificados de un host remoto)
    • inofix.acme-service-<servicio> (para reiniciar el servicio si el certificado ha cambiado)
  • Un host que ejecuta tanto una herramienta de solicitud de firma como un servicio determinado necesitará estos roles:
    • inofix.acme-setup (este rol)
    • inofix.acme-tiny-install
    • inofix.acme-request
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (para repetir automáticamente la firma una vez al mes)
    • inofix.acme-service-<servicio> (para reiniciar el servicio si el certificado ha cambiado)

Variables del rol

  • app__acme__user - opcional, valor predeterminado='acme'
  • app__acme__group - opcional, valor predeterminado='acme'
  • app__acme__home - opcional, valor predeterminado='/var/lib/acme'
  • app__acme__config_dir - opcional, valor predeterminado='/etc/ssl/acme'
  • app__acme__openssl_config - opcional, valor predeterminado='/etc/ssl/openssl.cnf'
  • app__acme__challenge_dir - opcional, valor predeterminado='/var/www/acme-challenges'
  • app__acme__scripts_dir - opcional, valor predeterminado='/etc/ssl/acme/scripts'
  • app__acme__service_dir - opcional, valor predeterminado='/etc/ssl/acme/service.d'
  • app__acme__bin_dir - opcional, valor predeterminado='/usr/local/bin'
  • app__acme__account_key - opcional, valor predeterminado='account.key'
  • app__acme__key_length - opcional, valor predeterminado=4096
  • app__acme__ssh_keytype - opcional, valor predeterminado='rsa'
  • app__acme__log_dir - opcional, valor predeterminado='/var/log/acme'
  • app__acme__letsencrypt_certs - opcional, valor predeterminado=[ {url='https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem', file='intermediate.crt'}, {url='https://letsencrypt.org/certs/isrgrootx1.pem', file='ca.crt'}]
  • app__acme__cron_minute - opcional, valor predeterminado='11'
  • app__acme__cron_hour - opcional, valor predeterminado='5'
  • app__acme__cron_day - opcional, valor predeterminado='*'
  • app__acme__cron_month - opcional, valor predeterminado='*'
  • app__acme__cron_year - opcional, valor predeterminado='*'
  • fqdn - opcional, valor predeterminado={{ ansible_fqdn | d(inventory_hostname ) }}
  • workdir - opcional, valor predeterminado=/tmp (directorio local, utilizado para el intercambio de claves públicas ssh)

Dependencias

Ejemplo de Playbook

- hosts: servers
  roles:
     - inofix.acme-setup

Consulta esto para un playbook completo con todos los roles relevantes incluidos.

Licencia

GPLv3

Información del autor

Instalar
ansible-galaxy install inofix.acme-setup
Licencia
gpl-3.0
Descargas
507
Propietario
INOFIX is a Luzern based software company focused on the development of free software and system solutions.