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 role for cfssl

Установить
ansible-galaxy install trombik/ansible-role-cfssl
Лицензия
isc
Загрузки
1129
Владелец
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/