Spec-Zone.ru › Ansible 2.6

openssl_certificate - Генерация и/или проверка сертификатов OpenSSL

Новая версия с 2.4.

  • Описание
    • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус
  • Техническое обслуживание
    • Автор

Описание

  • Этот модуль позволяет (снова) генерировать сертификаты OpenSSL. Он реализует понятие поставщика (например, selfsigned, acme, assertonly) для вашего сертификата. Поставщик «assertonly» предназначен для случаев, когда вас интересуют только свойства предоставленного сертификата. Многие свойства, которые можно указать в этом модуле, предназначены для проверки существующего или вновь сгенерированного сертификата. Правильное место для их указания, если вы хотите получить сертификат с этими свойствами, — это CSR (запрос на подписание сертификата). Он использует библиотеку pyOpenSSL для взаимодействия с OpenSSL.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • python-pyOpenSSL >= 0.15 (если используется поставщик selfsigned или assertonly)
  • acme-tiny (если используется поставщик acme)

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
acme_accountkey_path
Путь к ключу учетной записи acme для поставщика
acme_chain
(добавлено в 2.5)
По умолчанию:
"да"
Включить промежуточный сертификат в сгенерированный сертификат
acme_challenge_path
Путь к каталогу вызовов ACME, который обслуживается по адресу http://<HOST>:80/.well-known/acme-challenge/
attributes
(добавлено в 2.3)
Атрибуты, которые должен иметь файл или каталог. Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и отображаемый lsattr.

псевдонимы: attr
csr_path
Путь к запросу на подписание сертификата (CSR), используемому для генерации этого сертификата. Это не требуется в режиме assertonly.
extended_key_usage
Поле расширения extended_key_usage должно содержать все эти значения.

псевдонимы: extendedKeyUsage
extended_key_usage_strict
bool
    Варианты:
  • нет ←
  • да
Если установлено в True, поле расширения extended_key_usage должно содержать только эти значения.

псевдонимы: extendedKeyUsage_strict
force
bool
    Варианты:
  • нет ←
  • да
Сгенерировать сертификат, даже если он уже существует.
group
Имя группы, которая должна владеть файлом/каталогом, как это будет передано в chown.
has_expired
bool
    Варианты:
  • нет ←
  • да
Проверяет, истек ли сертификат/не истек ли он в момент выполнения модуля.
invalid_at
Сертификат должен быть недействительным в этот момент времени. Отметка времени отформатирована как ASN.1 TIME.
issuer
Ключевые пары, которые должны быть присутствуют в поле имени издателя сертификата. Если вам нужно указать более одного значения с одним ключом, используйте список в качестве значения.
issuer_strict
bool

(добавлено в 2.5)
    Варианты:
  • нет ←
  • да
Если установлено в True, поле issuer должно содержать только эти значения.
key_usage
Поле расширения key_usage должно содержать все эти значения.

псевдонимы: keyUsage
key_usage_strict
bool
    Варианты:
  • нет ←
  • да
Если установлено в True, поле расширения key_usage должно содержать только эти значения.

псевдонимы: keyUsage_strict
mode
Режим файла или каталога. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо указать ведущий ноль, чтобы интерпретатор YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '0644'), чтобы Ansible получил строку и смог выполнить преобразование из строки в число. Предоставление Ansible числа без выполнения одного из этих правил приведет к десятичному числу, что приведет к непредсказуемым результатам. Начиная с версии 1.8, режим может быть задан как символический режим (например, u+rwx или u=rw,g=r,o=r).
not_after
Сертификат должен истечь в этот момент времени. Отметка времени отформатирована как ASN.1 TIME.

псевдонимы: notAfter
not_before
Сертификат должен начать действовать в этот момент времени. Отметка времени отформатирована как ASN.1 TIME.

псевдонимы: notBefore
owner
Имя пользователя, который должен владеть файлом/каталогом, как это будет передано в chown.
path
обязательно
Абсолютный удаленный путь, где должен быть создан или уже находится сгенерированный файл сертификата.
privatekey_passphrase
Пароль к privatekey_path.
privatekey_path
Путь к закрытому ключу, используемому при подписи сертификата.
provider
обязательно
    Варианты:
  • selfsigned
  • assertonly
  • acme
Имя поставщика, используемого для генерации/получения сертификата OpenSSL. Поставщик assertonly не будет генерировать файлы и завершится ошибкой, если файл сертификата отсутствует.
selevel По умолчанию:
"s0"
Часть уровня SELinux контекста файла. Это атрибут MLS/MCS, иногда известный как range. Функция _default работает так же, как и для seuser.
selfsigned_digest По умолчанию:
"sha256"
Алгоритм хеширования, который будет использоваться при самоподписи сертификата
selfsigned_not_after
Отметка времени, по которой сертификат перестает быть действительным. Отметка времени отформатирована как ASN.1 TIME. Если это значение не указано, сертификат перестанет быть действительным через 10 лет от текущего момента.

псевдонимы: selfsigned_notAfter
selfsigned_not_before
Отметка времени, с которой сертификат начинает действовать. Отметка времени отформатирована как ASN.1 TIME. Если это значение не указано, сертификат начнёт действовать с текущего момента.

псевдонимы: selfsigned_notBefore
selfsigned_version
(добавлено в 2.5)
По умолчанию:
3
Версия сертификата selfsigned. В наши дни она почти всегда должна быть 3.
serole
Часть роли в контексте файла SELinux, функция _default работает так же, как и для seuser.
setype
Часть типа в контексте файла SELinux, функция _default работает так же, как и для seuser.
seuser
Часть пользователя в контексте файла SELinux. По умолчанию будет использоваться системная политика, если применимо. Если установлено в _default, будет использоваться часть политики user, если она доступна.
signature_algorithms
Список алгоритмов, с которыми вы бы приняли подпись сертификата (например, ['sha256WithRSAEncryption', 'sha512WithRSAEncryption']).
state
    Варианты:
  • present ←
  • absent
Должен ли существовать сертификат или нет, выполняя действия, если состояние отличается от указанного.
subject
Ключевые пары, которые должны присутствовать в поле имени субъекта сертификата. Если вам нужно указать более одного значения с одним ключом, используйте список в качестве значения.
subject_alt_name
Поле расширения subject_alt_name должно содержать эти значения.

псевдонимы: subjectAltName
subject_alt_name_strict
bool
    Варианты:
  • нет ←
  • да
Если установлено в True, поле расширения subject_alt_name должно содержать только эти значения.

псевдонимы: subjectAltName_strict
subject_strict
bool

(добавлено в 2.5)
    Варианты:
  • нет ←
  • да
Если установлено в True, поле subject должно содержать только эти значения.
unsafe_writes
bool

(добавлено в 2.2)
    Варианты:
  • нет ←
  • да
Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов. Иногда системы настроены или просто работают так, что это предотвращено. Один из примеров — файлы, смонтированные в docker, они не могут обновляться атомарно и могут быть обновлены только небезопасным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Имейте в виду, что это подвержено конкурентным состояниям и может привести к повреждению данных.
valid_at
Сертификат должен быть действителен в этот момент времени. Отметка времени отформатирована как ASN.1 TIME.
END_OF_DOCUMENT_MARKER
valid_in
Сертификат должен оставаться действительным ещё valid_in секунд.
version
Версия сертификата. В настоящее время она почти всегда должна быть 3.

Примечания

Примечание

  • Все значения ASN.1 TIME должны быть указаны в формате YYYYMMDDHHMMSSZ. Дата должна быть указана в формате UTC. Минуты и секунды обязательны.

Примеры

- name: Generate a Self Signed OpenSSL certificate
  openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    privatekey_path: /etc/ssl/private/ansible.com.pem
    csr_path: /etc/ssl/csr/ansible.com.csr
    provider: selfsigned

- name: Generate a Let's Encrypt Certificate
  openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    csr_path: /etc/ssl/csr/ansible.com.csr
    provider: acme
    acme_accountkey_path: /etc/ssl/private/ansible.com.pem
    acme_challenge_path: /etc/ssl/challenges/ansible.com/

- name: Force (re-)generate a new Let's Encrypt Certificate
  openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    csr_path: /etc/ssl/csr/ansible.com.csr
    provider: acme
    acme_accountkey_path: /etc/ssl/private/ansible.com.pem
    acme_challenge_path: /etc/ssl/challenges/ansible.com/
    force: True

# Examples for some checks one could use the assertonly provider for:

# How to use the assertonly provider to implement and trigger your own custom certificate generation workflow:
- name: Check if a certificate is currently still valid, ignoring failures
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    has_expired: False
  ignore_errors: True
  register: validity_check

- name: Run custom task(s) to get a new, valid certificate in case the initial check failed
  command: superspecialSSL recreate /etc/ssl/crt/example.com.crt
  when: validity_check.failed

- name: Check the new certificate again for validity with the same parameters, this time failing the play if it is still invalid
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    has_expired: False
  when: validity_check.failed

# Some other checks that assertonly could be used for:
- name: Verify that an existing certificate was issued by the Let's Encrypt CA and is currently still valid
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    issuer:
      O: Let's Encrypt
    has_expired: False

- name: Ensure that a certificate uses a modern signature algorithm (no SHA1, MD5 or DSA)
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    signature_algorithms:
      - sha224WithRSAEncryption
      - sha256WithRSAEncryption
      - sha384WithRSAEncryption
      - sha512WithRSAEncryption
      - sha224WithECDSAEncryption
      - sha256WithECDSAEncryption
      - sha384WithECDSAEncryption
      - sha512WithECDSAEncryption

- name: Ensure that the existing certificate belongs to the specified private key
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    privatekey_path: /etc/ssl/private/example.com.pem
    provider: assertonly

- name: Ensure that the existing certificate is still valid at the winter solstice 2017
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    valid_at: 20171221162800Z

- name: Ensure that the existing certificate is still valid 2 weeks (1209600 seconds) from now
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    valid_in: 1209600

- name: Ensure that the existing certificate is only used for digital signatures and encrypting other keys
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    key_usage:
      - digitalSignature
      - keyEncipherment
    key_usage_strict: true

- name: Ensure that the existing certificate can be used for client authentication
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    extended_key_usage:
      - clientAuth

- name: Ensure that the existing certificate can only be used for client authentication and time stamping
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    extended_key_usage:
      - clientAuth
      - 1.3.6.1.5.5.7.3.8
    extended_key_usage_strict: true

- name: Ensure that the existing certificate has a certain domain in its subjectAltName
  openssl_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    subject_alt_name:
      - www.example.com
      - test.example.com

Возвращаемые значения

Общие возвращаемые значения документированы здесь, ниже приведены поля, уникальные для данного модуля:

Ключ Возвращённое значение Описание
filename
строка
изменено или успешно
Путь к сгенерированному сертификату

Пример:
/etc/ssl/crt/www.ansible.com.crt


Статус

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

Обслуживание

Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Дополнительную информацию см. в разделе Поддержка и обслуживание модулей.

Список других модулей, поддерживаемых сообществом Ansible, см. здесь.

Автор

  • Yanis Guenane (@Spredzy)
  • Markus Teufelberger (@MarkusTeufelberger)

Подсказка

Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/openssl_certificate_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API