ca_keys

Ключи удостоверяющего центра (CA)

Это роль Ansible для генерации приватных ключей CA и подписанных сертификатов. Их можно использовать для защиты приложений серверов/клиентов, где требуется как шифрование данных при передаче, так и аутентификация между узлами.

При правильной настройке ключи, подписанные частным CA, могут предотвратить атаки типа "человек посередине" (MITM) и могут быть использованы для двусторонней аутентификации. Например, можно защитить соединения между узлами в кластере Kafka или Elastic Stack.

Роль выполняет следующие основные шаги:

  • Генерация пары ключей CA (удостоверяющий центр)
  • Генерация ключей и CSR (заявок на подпись сертификата) для указанных узлов
  • Подписание CSR с использованием CA для создания подписанных сертификатов (CRT)
  • Опционально упаковка необходимых ключей в бинарные файлы java keystore/truststore

По умолчанию

Посмотрите все настройки по умолчанию здесь и измените их по мере необходимости.

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

Рекомендуемое использование: запустите роль в локальном плейбуке (см. ниже), затем переместите сгенерированные файлы в безопасное место. Не оставляйте ключи без присмотра. Этот код предоставляется как есть, и как вы его используете и храните полученные ключи — это ваша ответственность!

Эта роль может быть использована для создания новых ключей и CRT из существующего сертификата CA, если он присутствует.

После их создания переместите необходимые файлы в проект, в котором вы их используете. Вы можете использовать Ansible Vault для шифрования файлов (включая бинарные файлы jks), а модули Ansible, такие как copy, будут расшифровывать их во время загрузки, если вы предоставили пароль от хранилища.

Проверка ключей

Вы можете (и должны) проверять ключи с помощью различных команд openssl. Вот некоторые примеры:

openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<key-name>.key -check
openssl x509 -in generated_keys/<key-name>.crt -text -noout

Ограничения Python

Из-за ошибки Ansible (исправление сейчас включено в ветку devel) вам нужно использовать Python 2.7 при выполнении задач по созданию java keystores. Подробности смотрите в этой проблеме.

Пример плейбука

- name: Генерация ключей
  hosts: 127.0.0.1
  connection: local
  
  vars:
    ansible_python_interpreter: '/usr/bin/python2.7'

  roles:
    - role: libre_ops.ca_keys
      vars:
        cert_organisation: Example Inc.
        cert_unit: Отдел ключей
        cert_country: FR
        cert_state: Париж
        cert_location: Париж
        
        create_keys:
          - filename: server
            subject:
              - "/CN=app.client.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"
              
          - filename: client
            subject:
              - "/CN=app.server.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"    
О проекте

Generate private CA keys and signed certificates

Установить
ansible-galaxy install libre-ops/ca_keys
Лицензия
gpl-3.0
Загрузки
124
Владелец
Ansible roles for syadmin proles.