Spec-Zone.ru › Ansible 2.7

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

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

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

Описание

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

Требования

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

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

Параметры

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

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

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

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

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

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

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

псевдонимы: notBefore
ownca_digest
-
добавлен в 2.7
По умолчанию:
"sha256"
Алгоритм хеширования, используемый для сертификата ownca.
Используется только провайдером ownca.
ownca_not_after
-
добавлен в 2.7
Отметка времени, после которой сертификат перестаёт быть действительным. Отметка времени отформатирована как ASN.1 TIME. Если это значение не указано, сертификат перестанет быть действительным через 10 лет.
Используется только провайдером ownca.
ownca_not_before
-
добавлен в 2.7
Отметка времени, с которой сертификат начинает быть действительным. Отметка времени отформатирована как ASN.1 TIME. Если это значение не указано, сертификат начнёт действовать с текущего момента.
Используется только провайдером ownca.
ownca_path
-
добавлен в 2.7
Абсолютный путь к сертификату ЦС (Центра сертификации).
Используется только провайдером ownca.
ownca_privatekey_passphrase
-
добавлен в 2.7
Пароль к ownca_privatekey_path.
Используется только провайдером ownca.
ownca_privatekey_path
-
добавлен в 2.7
Путь к закрытому ключу ЦС (Центра сертификации), который используется для подписи сертификата.
Используется только провайдером ownca.
ownca_version
-
добавлен в 2.7
По умолчанию:
3
Версия сертификата ownca.
В настоящее время это должно быть почти всегда 3.
Используется только провайдером ownca.
owner
-
Имя пользователя, который должен владеть файлом/каталогом, как для команды chown.
path
- / обязательно
Абсолютный удаленный путь, где должен быть создан или уже находится сгенерированный файл сертификата.
privatekey_passphrase
-
Пароль к файлу privatekey_path.
Требуется, если закрытый ключ защищен паролем.
privatekey_path
-
Путь к закрытому ключу, который будет использоваться для подписи сертификата.
provider
- / обязательно
    Варианты:
  • selfsigned
  • ownca
  • assertonly
  • acme
Имя поставщика для генерации/получения сертификата OpenSSL. Поставщик assertonly не будет генерировать файлы и завершит работу, если файл сертификата отсутствует.
selevel
-
По умолчанию:
"s0"
Уровень части контекста файла SELinux. Это атрибут MLS/MCS, иногда называемый range. Функция _default работает как для seuser.
selfsigned_digest
-
По умолчанию:
"sha256"
Алгоритм дайджеста, который используется при самоподписи сертификата.
Используется только поставщиком selfsigned.
selfsigned_not_after
-
Отметка времени, после которой сертификат перестает быть действительным. Отметка времени отформатирована в формате ASN.1 TIME. Если это значение не указано, сертификат перестанет быть действительным через 10 лет от текущего момента.
Используется только поставщиком selfsigned.

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

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

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

псевдонимы: subjectAltName_strict
subject_strict
boolean
добавлено в 2.5
    Варианты:
  • нет ←
  • да
Если установлено значение True, поле subject должно содержать только эти значения.
Используется только поставщиком assertonly.
unsafe_writes
boolean
добавлено в 2.2
    Варианты:
  • нет ←
  • да
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настраиваются или просто неисправны, что препятствует этому. Одним примером являются файлы, смонтированные в Docker, которые не могут обновляться атомарно изнутри контейнера и могут записываться только небезопасным способом.
Этот параметр позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (однако это не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
valid_at
-
Сертификат должен быть действителен в этот момент времени.
Отметка времени отформатирована в формате ASN.1 TIME.
Используется только поставщиком assertonly.
valid_in
-
Сертификат должен оставаться действительным в течение valid_in секунд от текущего момента.
Используется только поставщиком assertonly.
version
-
Версия сертификата.
В настоящее время она почти всегда должна быть 3.
Используется только поставщиком assertonly.

Примечания

Примечание

  • Все значения ASN.1 TIME должны быть указаны в формате YYYYMMDDHHMMSSZ. Указанная дата должна быть по UTC. Минуты и секунды обязательны.
  • По соображениям безопасности при использовании поставщика ownca, не следует запускать модуль openssl_certificate на целевом компьютере, а на выделенном сервере CA. Не рекомендуется хранить закрытый ключ CA на целевом компьютере. После подписи сертификат можно переместить на целевой компьютер.

Примеры

- 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 an OpenSSL certificate signed with your own CA certificate
  openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    csr_path: /etc/ssl/csr/ansible.com.csr
    ownca_path: /etc/ssl/crt/ansible_CA.crt
    ownca_privatekey_path: /etc/ssl/private/ansible_CA.pem
    provider: ownca

- 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. [community]

Авторы

  • 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.7/modules/openssl_certificate_module.html

Spec-Zone.ru

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