cfssl
trombik.cfssl
Роль ansible
для cfssl
. Поддерживается API сервер (cfssl serve
).
Для всех пользователей
Поскольку лишь некоторые дистрибутивы поддерживают API сервер в своих пакетах, переменные роли cfssl_db_*
могут изменяться.
Чтобы запустить cfssl
как сервер, ваш дистрибутив должен предоставлять сценарий запуска и другие изменения в пакете. Насколько мне известно, пакет из Ubuntu такого не предоставляет. Поэтому поддержка API сервера не реализована для версий Debian.
Требования
Отсутствуют
Переменные роли
Переменная | Описание | По умолчанию |
---|---|---|
cfssl_user |
имя пользователя cfssl |
{{ __cfssl_user }} |
cfssl_group |
имя группы cfssl |
{{ __cfssl_group }} |
cfssl_package |
имя пакета cfssl |
{{ __cfssl_package }} |
cfssl_extra_packages |
список дополнительных пакетов для установки | [] |
cfssl_ca_root_dir |
путь к корневой директории CA | {{ __cfssl_ca_root_dir }} |
cfssl_ca_secret_key_file |
путь к файлу секретного ключа CA | {{ cfssl_ca_root_dir }}/ca-key.pem |
cfssl_ca_public_key_file |
путь к файлу публичного ключа CA | {{ cfssl_ca_root_dir }}/ca.pem |
cfssl_ca_csr_file |
путь к CSR JSON файлу корневой CA | {{ cfssl_ca_root_dir }}/ca.csr |
cfssl_ca_csr_config |
содержимое файла конфигурации CSR CA | {} |
cfssl_ca_config_file |
путь к файлу конфигурации CA в JSON | {{ cfssl_ca_root_dir }}/ca-config.json |
cfssl_ca_csr_config_file |
путь к файлу конфигурации CSR CA в JSON | "{{ cfssl_ca_root_dir }}/ca-csr.json" |
cfssl_ca_config |
содержимое файла конфигурации CA | {} |
cfssl_certs_dir |
путь к директории для хранения подписанных сертификатов | {{ cfssl_ca_root_dir }}/certs |
cfssl_service |
имя сервиса cfssl |
cfssl |
cfssl_db_config |
Конфигурация базы данных в YAML. См. certdb/README.nd в исходном коде. | {} |
cfssl_db_type |
Тип базы данных. Поддерживается только значение sqlite . Если указано, роль выполняет специфичные задачи для базы данных и запускает cfssl как сервер. |
"" |
cfssl_db_dir |
Путь к директории базы данных | {{ __cfssl_db_dir }} |
cfssl_db_sqlite_bin |
Имя файла команды sqlite |
sqlite3 |
cfssl_db_sqlite_database_file |
Путь к файлу базы данных sqlite |
{{ cfssl_db_dir }}/certdb.db |
cfssl_db_sqlite_sql_file_dir |
Путь к директории, где хранятся SQL файлы. | {{ __cfssl_db_sqlite_sql_file_dir }} |
cfssl_db_migration_dir |
Путь к директории миграции базы данных | {{ cfssl_ca_root_dir }}/goose/{{ cfssl_db_type }} |
cfssl_db_migration_config |
Конфигурация для миграции базы данных | {} |
cfssl_db_migration_environment |
Среда для миграции базы данных | development |
cfssl_flags |
Дополнительные опции для сценария запуска | "" |
cfssl_certs |
список сертификатов для подписи (см. ниже) | "" |
cfssl_certs
Это список словарей. Каждый элемент представляет собой CSR.
Ключ | Описание | Обязательный? |
---|---|---|
name |
относительное имя файла из cfssl_certs_dir |
да |
SAN |
список альтернативных имен субъекта | нет |
profile |
имя профиля, используемого при подписи | да |
json |
содержимое JSON файла запроса в формате YAML | да |
owner |
имя пользователя Unix владельца приватного ключа (по умолчанию cfssl_user ) |
нет |
Включение trombik.cfssl
Вы можете включить роль в ваши задачи или другие роли. Используйте vars
для определения специфичных переменных роли.
- name: Включить роль trombik.cfssl
include_role:
name: trombik.cfssl
vars:
cfssl_extra_packages:
- zsh
Однако, когда вы хотите передать одну переменную, которая включает переменные роли, вам нужно передать вашу переменную в специальную переменную моста роли cfssl_vars
.
- name: Включить роль trombik.cfssl
include_role:
name: trombik.cfssl
vars:
cfssl_vars: "{{ my_variable }}"
Следующий пример НЕ работает:
- name: Включить роль trombik.cfssl
include_role:
name: trombik.cfssl
vars: "{{ my_variable }}"
Смотрите tests/serverspec/intermediate.yml, который включает роль несколько раз для создания промежуточных CA.
Debian
Переменная | По умолчанию |
---|---|
__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
Переменная | По умолчанию |
---|---|
__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
Переменная | По умолчанию |
---|---|
__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 |
Зависимости
Отсутствуют
Пример Playbook
Этот пример управляет cfssl
и подписывает несколько сертификатов.
Для примера API сервера смотрите tests/serverspec/api.yml.
Для примера нескольких промежуточных CA под корневым CA смотрите tests/serverspec/intermediate.yml.
---
- hosts: localhost
roles:
- role: ansible-role-cfssl
vars:
# этот тестовый случай следует тем же этапам, которые описаны на
# https://docs.sensu.io/sensu-go/latest/guides/generate-certificates/
cfssl_certs:
- name: agent1.example.com.json
# Альтернативное имя субъекта, или SAN
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
Лицензия
Copyright (c) 2020 Tomoyuki Sakurai <[email protected]>
Разрешение использовать, копировать, изменять и распространять это программное обеспечение для любых
целей с или без платы предоставляется при условии, что вышеуказанное
авторское право и это разрешение будут указываться во всех копиях.
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", И АВТОР ОТКАЗЫВАЕТСЯ ОТ ВСЕХ ГАРАНТИЙ
КАСАТЕЛЬНО ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВКЛЮЧАЯ ВСЕ НАКАЗЫВАЕМЫЕ ГАРАНТИИ
ТОРГОВОЙ ПРИГОДНОСТИ И ГОДНОСТИ. В НИКАКОМ СЛУЧАЕ АВТОР НЕ БУДЕТ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ОСОБЫЕ, ПРЯМЫЕ, КОСВЕННЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ ИЛИ ЛЮБЫЕ УБЫТКИ,
ВЫТЕКАЮЩИЕ ИЗ ПОТЕРИ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ, БУДЬ И ТЕОRETICAL В ДОГОВОРЕ, НЕКОТОРЫЕ ХИЩЕНИЯ ИЛИ ДРУГИЕ УБЫТКИ,
ВЫТЕКАЮЩИЕ ИЗ ИСПОЛЬЗОВАНИЯ ИЛИ ЭФФЕКТИВНОСТИ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Информация об авторе
Томоюки Сакураи y@trombik.org
Этот README был создан с помощью qansible
ansible-galaxy install trombik/ansible-role-cfssl