infra_certs

Ansible Роль - Генератор Сертификатов

Ansible Роль для создания сертификатов для использования на Linux сервере.

Купите мне кофе

Статус теста Molecule Статус теста YamlLint Статус теста PyLint Статус теста Ansible-Lint Ansible Galaxy

Логи Molecule: Короткие, Полные

Проверено на:

  • Debian 11
  • Debian 12

Установка

# последняя версия
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs

# из galaxy
ansible-galaxy install ansibleguy.infra_certs

# или в пользовательский путь для ролей
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles

# установка зависимостей
ansible-galaxy install -r requirements.yml

Использование

Хотите простую графическую интерфейс Ansible? Посмотрите мой Ansible WebUI

Примечания

Режимы самоподписанного и минимального CA создадут только один сертификат за запуск.

Повторные запуски могут сэкономить ресурсы с помощью тега 'certs'.

Режим LetsEncrypt создаст/удалит несколько сертификатов по заданным параметрам.

Конфигурация

Пример конфигурации для LetsEncrypt:

certs:
  mode: 'le_certbot'
  path: '/etc/apache2/ssl'
  letsencrypt:
    certs:
      myNiceSite:
        domains: ['myRandomSite.net', 'ansibleguy.net']
        email: '[email protected]'
    service: 'apache'

Пример конфигурации для самоподписанного сертификата:

certs:
  mode: 'selfsigned'  # или 'snakeoil' (если быстрее)
  # выберите 'ca', если используете dns-имена
  #   некоторые браузеры не позволят вам подключиться, используя самоподписанные сертификаты
  path: '/etc/nginx/ssl'
  group_key: 'nginx'
  owner_cert: 'nginx'
  cert:
    cn: 'Мой отличный сертификат!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
    ips: ['192.168.44.2']
    pwd: !vault ...

Пример конфигурации для минимального CA:

certs:
  mode: 'ca'
  path: '/etc/ca/certs'
  mode_key: '0400'
  cert:
    name: 'custom_file_name'  # расширение будет добавлено
    cn: 'Мой отличный сертификат!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
  ca:
    path: '/etc/ca'
    cn: 'SUPER CertificateAuthority'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    pwd: !vault ...

Используя минимальный CA, вы можете создать несколько сертификатов, подписанных CA, повторно запуская роль с измененными настройками 'cert'.

Вы можете использовать 'ansible-vault' для шифрования ваших паролей:

ansible-vault encrypt_string

Выполнение

Запустите плейбук:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass

Также доступны полезные теги:

  • certs => игнорировать задачи ca; только генерировать сертификаты
  • selfsigned
  • config
  • certs

Для отладки ошибок вы можете установить переменную 'debug' во время выполнения:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes

Функциональность

  • Установка пакетов

    • Зависимости Ansible (минимальные)
    • Зависимости Crypto
  • Конфигурация

    • Четыре Возможных Режима:

      • Генерация самоподписанного сертификата
      • Использование минимального удостоверяющего центра для создания подписанных сертификатов
      • Настройка LetsEncrypt-Certbot для генерации общественно действительных сертификатов
        • Поддерживается для Nginx и Apache
        • Хост должен иметь действующий публичный dns-запись на него
        • Должен быть доступен публично через порт 80/tcp
    • Конфигурация по умолчанию:

      • Режим => Самоподписанный

Информация

  • Примечание: эта роль в настоящее время поддерживает только системы на базе Debian

  • Примечание: Большинство возможностей роли можно выбрать по желанию.

    Для всех доступных опций - смотрите настройки по умолчанию в основном файле настроек!

  • Примечание: Если у вас есть необходимость массового управления сертификатами - вам может понадобиться проверить роль ansibleguy.infra_pki, которая позволяет вам создавать и управлять полноценной инфраструктурой открытых ключей.

  • Примечание: Имя файла сертификата (переменная name или CommonName) будет обновлено:

    • пробелы трансформируются в подчеркивания
    • все символы, кроме "0-9a-zA-Z.", удаляются
    • к имени файла будет добавлено расширение (crt/chain.crt/key/csr)
  • Предупреждение: Не каждая настройка/переменная, которую вы указываете, будет проверяться на корректность. Неверная конфигурация может сломать роль!

  • Информация: Для работы обновления LetsEncrypt необходимо разрешить исходящие соединения на:

    80/tcp, 443/tcp+udp на acme-v02.api.letsencrypt.org, staging-v02.api.letsencrypt.org (режим отладки) и r3.o.lencr.org

О проекте

Meat-role to generate/manage certificates for other roles

Установить
ansible-galaxy install ansibleguy/infra_certs
Лицензия
other
Загрузки
6304
Владелец
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg