trombik.cfssl

trombik.cfssl

Rol de ansible para cfssl. El servidor API (cfssl serve) es compatible.

Para todos los usuarios

Como pocas distribuciones admiten el servidor API en sus paquetes, las variables de rol cfssl_db_* están sujetas a cambios.

Para ejecutar cfssl como servidor, el paquete de tu distribución debe proporcionar un script de inicio y otras modificaciones al paquete. Hasta donde sé, el de Ubuntu no lo hace. Por lo tanto, el soporte para el servidor API no se ha implementado para variantes de Debian.

Requisitos

Ninguno

Variables de Rol

Variable Descripción Predeterminado
cfssl_user nombre de usuario de cfssl {{ __cfssl_user }}
cfssl_group nombre de grupo de cfssl {{ __cfssl_group }}
cfssl_package nombre del paquete de cfssl {{ __cfssl_package }}
cfssl_extra_packages lista de paquetes adicionales a instalar []
cfssl_ca_root_dir ruta al directorio raíz de CA {{ __cfssl_ca_root_dir }}
cfssl_ca_secret_key_file ruta al archivo de clave secreta raíz {{ cfssl_ca_root_dir }}/ca-key.pem
cfssl_ca_public_key_file ruta al archivo de clave pública raíz {{ cfssl_ca_root_dir }}/ca.pem
cfssl_ca_csr_file ruta al archivo JSON CSR de la CA raíz {{ cfssl_ca_root_dir }}/ca.csr
cfssl_ca_csr_config contenido del archivo de configuración cfssl_ca_csr_config_file {}
cfssl_ca_config_file ruta al archivo de configuración de la CA en JSON {{ cfssl_ca_root_dir }}/ca-config.json
cfssl_ca_csr_config_file ruta al archivo de configuración CSR de la CA en JSON "{{ cfssl_ca_root_dir }}/ca-csr.json"
cfssl_ca_config contenido del archivo de configuración de la CA {}
cfssl_certs_dir ruta al directorio para guardar certificados firmados {{ cfssl_ca_root_dir }}/certs
cfssl_service Nombre del servicio de cfssl cfssl
cfssl_db_config Configuración de la base de datos en YAML. Consulta certdb/README.nd en el código fuente para más detalles. {}
cfssl_db_type Tipo de la base de datos. El valor soportado es solo sqlite. Si se especifica, el rol ejecutará tareas específicas para la base de datos y comenzará cfssl como servidor. ""
cfssl_db_dir Ruta al directorio de la base de datos {{ __cfssl_db_dir }}
cfssl_db_sqlite_bin Nombre del archivo del comando sqlite sqlite3
cfssl_db_sqlite_database_file Ruta al archivo de la base de datos sqlite {{ cfssl_db_dir }}/certdb.db
cfssl_db_sqlite_sql_file_dir Ruta a un directorio donde se almacenan los archivos SQL. {{ __cfssl_db_sqlite_sql_file_dir }}
cfssl_db_migration_dir Ruta al directorio de migración de la base de datos {{ cfssl_ca_root_dir }}/goose/{{ cfssl_db_type }}
cfssl_db_migration_config Configuración para la migración de la base de datos {}
cfssl_db_migration_environment Entorno para la migración de la base de datos development
cfssl_flags Opciones adicionales para el script de inicio ""
cfssl_certs lista de certificados a firmar (ver debajo) ""

cfssl_certs

Esta es una lista de diccionarios. Un elemento representa un CSR.

Clave Descripción ¿Obligatoria?
name nombre de archivo relativo desde cfssl_certs_dir
SAN lista de Nombre Alternativo del Sujeto no
profile nombre del perfil a usar al firmar
json contenido del archivo JSON de la solicitud en formato YAML
owner nombre de usuario Unix del propietario del archivo de clave privada (por defecto es cfssl_user) no

Incluir trombik.cfssl

Puedes incluir el rol desde tus tareas o roles. Usa vars para definir variables de rol específicas.

- name: Incluir rol trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars:
    cfssl_extra_packages:
      - zsh

Sin embargo, cuando quieras pasar una única variable que incluya las variables del rol, necesitas pasar tu variable a una variable puente especial, cfssl_vars.

- name: Incluir rol trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars:
    cfssl_vars: "{{ my_variable }}"

El siguiente ejemplo NO funciona:

- name: Incluir rol trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars: "{{ my_variable }}"

Consulta tests/serverspec/intermediate.yml, que incluye el rol múltiples veces para crear CAs intermedias.

Debian

Variable Predeterminado
__cfssl_user cfssl
__cfssl_group cfssl
__cfssl_package golang-cfssl
__cfssl_ca_root_dir /etc/cfssl
__cfssl_db_dir /var/lib/cfssl
__cfssl_db_sqlite_sql_file_dir ""

FreeBSD

Variable Predeterminado
__cfssl_user cfssl
__cfssl_group cfssl
__cfssl_package security/cfssl
__cfssl_ca_root_dir /usr/local/etc/cfssl
__cfssl_db_dir /var/db/cfssl
__cfssl_db_sqlite_sql_file_dir /usr/local/share/cfssl/certdb/sqlite/migrations

OpenBSD

Variable Predeterminado
__cfssl_user _cfssl
__cfssl_group _cfssl
__cfssl_package cfssl
__cfssl_ca_root_dir /etc/cfssl
__cfssl_db_dir /var/db/cfssl
__cfssl_db_sqlite_sql_file_dir /usr/local/share/cfssl/certdb/sqlite/migrations

Dependencias

Ninguna

Ejemplo de Playbook

Este ejemplo gestiona cfssl y firma algunos certificados.

Para un ejemplo de servidor API, consulta tests/serverspec/api.yml.

Para un ejemplo de múltiples CAs intermedias bajo una CA raíz, consulta tests/serverspec/intermediate.yml.

---
- hosts: localhost
  roles:
    - role: ansible-role-cfssl
  vars:
    # este caso de prueba sigue los mismos pasos descritos en
    # https://docs.sensu.io/sensu-go/latest/guides/generate-certificates/
    cfssl_certs:
      - name: agent1.example.com.json
        # Nombre Alternativo del Sujeto, o SAN en corto
        SAN: []
        profile: agent
        owner: nobody
        json:
          CN: agent1.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-1.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.1
          - backend-1
        profile: backend
        json:
          CN: backend-1.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-2.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.2
          - backend-2
        profile: backend
        json:
          CN: backend-2.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-3.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.3
          - backend-3
        profile: backend
        json:
          CN: backend-3.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
    cfssl_ca_config:
      signing:
        default:
          expiry: 17520h
          usages:
            - signing
            - key encipherment
            - client auth
        profiles:
          backend:
            expiry: 4320h
            usages:
              - signing
              - key encipherment
              - server auth
          agent:
            expiry: 4320h
            usages:
              - signing
              - key encipherment
              - client auth

    cfssl_ca_csr_config:
      CN: Sensu Test CA
      key:
        algo: rsa
        size: 2048

Licencia

Copyright (c) 2020 Tomoyuki Sakurai <[email protected]>

Se concede permiso para usar, copiar, modificar y distribuir este software para cualquier propósito, con o sin cuota, siempre que el aviso de copyright anterior y este aviso de permiso aparezcan en todas las copias.

EL SOFTWARE SE PROPORCIONA "TAL CUAL" Y EL AUTOR RENUNCIA A TODAS LAS GARANTÍAS RELATIVAS A ESTE SOFTWARE, INCLUYENDO TODAS LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN. EN NINGÚN CASO EL AUTOR SERÁ RESPONSABLE DE CUALQUIER DAÑO ESPECIAL, DIRECTO, INDIRECTO O CONSECUENTE O CUALQUIER DAÑO RESULTANTE DE LA PÉRDIDA DE USO, DATOS O BENEFICIOS, YA SEA EN UNA ACCIÓN DE CONTRATO, NEGLIGENCIA U OTRA ACCIÓN TORTUOSA, QUE SURJA DE O EN RELACIÓN CON EL USO O EL RENDIMIENTO DE ESTE SOFTWARE.

Información del Autor

Tomoyuki Sakurai y@trombik.org

Este README fue creado por qansible

Acerca del proyecto

ansible role for cfssl

Instalar
ansible-galaxy install trombik.cfssl
Licencia
isc
Descargas
1.1k
Propietario
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/