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 |
sí |
SAN |
lista de Nombre Alternativo del Sujeto | no |
profile |
nombre del perfil a usar al firmar | sí |
json |
contenido del archivo JSON de la solicitud en formato YAML | sí |
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
ansible-galaxy install trombik.cfssl