Spec-Zone.ru › Ansible 2.8

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

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

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

Обзор

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

Требования

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

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

Параметры

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

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

псевдонимы: extendedKeyUsage
extended_key_usage_strict
логическое значение
    Варианты:
  • нет ←
  • да
Если установлено yes, поле расширенного использования ключа (extended_key_usage) должно содержать только эти значения.
Используется только поставщиком assertonly.

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

псевдонимы: keyUsage
key_usage_strict
логическое значение
    Варианты:
  • нет ←
  • да
Если установлено yes, поле 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
Значение по умолчанию:
"+3650d"
Точка времени, в которой сертификат перестает быть действительным.
Время может быть указано как относительное время, так и как абсолютная отметка времени.
Время всегда интерпретируется как UTC.
Формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат перестанет быть действительным через 10 лет.
Используется только поставщиком ownca.
ownca_not_before
строка
добавлен в 2.7
Значение по умолчанию:
"+0s"
Точка времени, с которой сертификат становится действительным.
Время может быть указано как относительное время, так и как абсолютная отметка времени.
Время всегда интерпретируется как UTC.
Формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат начнет действовать сейчас.
Используется только поставщиком ownca.
ownca_path
путь
добавлен в 2.7
Полный путь к сертификату CA (Центрального органа сертификации).
Используется только поставщиком ownca.
ownca_privatekey_passphrase
строка
добавлен в 2.7
Пароль к ownca_privatekey_path.
Используется только поставщиком ownca.
ownca_privatekey_path
путь
добавлен в 2.7
Путь к закрытому ключу CA (Certificate Authority), используемому при подписании сертификата.
Используется только поставщиком ownca.
ownca_version
целое число
добавлен в 2.7
По умолчанию:
3
Версия сертификата ownca.
В настоящее время она почти всегда должна быть 3.
Используется только поставщиком ownca.
owner
строка
Имя пользователя, который должен владеть файлом/каталогом (как в команде chown).
path
путь / обязательно
Абсолютный удаленный путь, где должен быть создан или уже находится созданный файл сертификата.
privatekey_passphrase
строка
Пароль к privatekey_path.
Требуется, если закрытый ключ защищен паролем.
privatekey_path
путь
Путь к закрытому ключу, используемому при подписании сертификата.
provider
строка / обязательно
    Варианты:
  • acme
  • assertonly
  • ownca
  • selfsigned
Имя поставщика для генерации/получения сертификата OpenSSL.
Поставщик assertonly не будет генерировать файлы и завершится ошибкой, если файл сертификата отсутствует.
select_crypto_backend
строка
добавлен в 2.8
    Варианты:
  • auto ←
  • cryptography
  • pyopenssl
Определяет, какой криптографический бэкенд использовать.
По умолчанию выбирается auto, который пытается использовать cryptography, если доступен, и возвращается к pyopenssl.
Если установлено pyopenssl, будет пытаться использовать библиотеку pyOpenSSL.
Если установлено cryptography, будет пытаться использовать библиотеку cryptography.
selevel
строка
По умолчанию:
"s0"
Часть контекста файла SELinux, отвечающая за уровень.
Это атрибут MLS/MCS, иногда известный как range.
При установке _default, будет использоваться часть политики level, если она доступна.
selfsigned_digest
строка
По умолчанию:
"sha256"
Алгоритм хеширования, используемый при самоподписании сертификата.
Используется только поставщиком selfsigned.
selfsigned_not_after
строка
По умолчанию:
"+3650d"
Время, по истечении которого сертификат перестаёт быть действительным.
Время может быть указано либо как относительное время, либо как абсолютная метка времени.
Время всегда интерпретируется как UTC.
Допустимый формат: [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат перестанет быть действительным через 10 лет.
Используется только поставщиком selfsigned.

псевдонимы: selfsigned_notAfter
selfsigned_not_before
строка
По умолчанию:
"+0s"
Время, с которого сертификат начинает быть действительным.
Время может быть указано либо как относительное время, либо как абсолютная метка времени.
Время всегда интерпретируется как UTC.
Допустимый формат: [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат начнёт действовать с текущего момента.
Используется только поставщиком selfsigned.

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

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

псевдонимы: subjectAltName_strict
subject_strict
булево
добавлен в 2.5
    Варианты:
  • нет ←
  • да
Если установлено yes, поле subject должно содержать только эти значения.
Используется только поставщиком assertonly.
unsafe_writes
булево
добавлен в 2.2
    Варианты:
  • нет ←
  • да
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто не работают так, чтобы это было возможно. Один пример — файлы, монтированные с помощью docker, которые не могут обновляться атомарно изнутри контейнера и могут записываться только неатомарно.
Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов при сбое атомарных операций (однако это не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
valid_at
строка
Сертификат должен быть действительным в данный момент времени.
Отметка времени отформатирована как ASN.1 TIME.
Используется только поставщиком assertonly.
valid_in
строка
Сертификат должен оставаться действительным в течение относительного временного смещения от текущего момента.
Допустимый формат - [+-]timespec | number_of_seconds, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании этого параметра этот модуль НЕ идемпотентен.
Используется только поставщиком assertonly.
version
целое число
Версия сертификата.
В настоящее время она почти всегда должна быть 3.
Используется только поставщиком assertonly.

Примечания

Примечание

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

См. также

См. также

openssl_csr – Генерация запроса на подписание сертификата OpenSSL (CSR)
Официальная документация по модулю openssl_csr.
openssl_dhparam – Генерация параметров Diffie-Hellman OpenSSL
Официальная документация по модулю openssl_dhparam.
openssl_pkcs12 – Генерация архива OpenSSL PKCS#12
Официальная документация по модулю openssl_pkcs12.
openssl_privatekey – Генерация закрытых ключей OpenSSL
Официальная документация по модулю openssl_privatekey.
openssl_publickey – Генерация открытого ключа OpenSSL из закрытого ключа
Официальная документация по модулю openssl_publickey.

Примеры

- 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: yes

# 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: no
  ignore_errors: yes
  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: no
  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: no

- 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

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

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

Ключ Возвращено Описание
backup_file
строка
изменено и если backup yes
Имя созданного файла резервной копии.

Пример:
/path/to/www.ansible.com.crt.2019-03-09@11:22~
filename
строка
изменено или успешно
Путь к сгенерированному сертификату

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


Статус

  • Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
  • Этот модуль поддерживается сообществом 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.8/modules/openssl_certificate_module.html

Spec-Zone.ru

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