Spec-Zone.ru › Ansible 2.10

community.crypto.openssl_csr – Генерация запроса на подпись сертификата OpenSSL (CSR)

Примечание

Этот плагин является частью коллекции community.crypto (версия 1.3.0).

Для его установки используйте: ansible-galaxy collection install community.crypto.

Для использования в playbook, укажите: community.crypto.openssl_csr.

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

Краткое описание

  • Обратите внимание, что модуль пересоздает существующий CSR, если он не соответствует параметрам модуля или если он кажется поврежденным. Если вы обеспокоены тем, что это может перезаписать ваш существующий CSR, рассмотрите возможность использования параметра backup.
  • Модуль может использовать библиотеку Python cryptography или библиотеку Python pyOpenSSL. По умолчанию он пытается определить, какая из них доступна. Это можно переопределить с помощью параметра select_crypto_backend. Обратите внимание, что бэкэнд PyOpenSSL был объявлен устаревшим в Ansible 2.9 и будет удален в community.crypto 2.0.0.
  • Этот модуль позволяет (пере)генерировать запросы на подпись сертификата OpenSSL.
  • Этот модуль поддерживает расширения subjectAltName, keyUsage, extendedKeyUsage, basicConstraints и OCSP Must Staple.

Требования

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

  • Либо cryptography >= 1.3
  • Или pyOpenSSL >= 0.15

Параметры

Parameter Choices/Defaults Comments
attributes
string
added in 2.3 of ansible.builtin
Атрибуты результирующего файла или каталога.
Чтобы получить поддерживаемые флаги, посмотрите страницу руководства для chattr в целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и отображаемые lsattr.
Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.

aliases: attr
authority_cert_issuer
list / elements=string
Имена, которые будут присутствовать в поле издателя сертификата авторитета запроса на подпись сертификата.
Значения должны быть предваряться их опциями. (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, которые специфичны для вашего центра сертификации)
Пример: DNS:ca.example.org
Если указано, authority_key_identifier также должен быть указан.
Обратите внимание, что коммерческие центры сертификации игнорируют это значение, соответственно, используют значение по своему выбору. Указание этой опции в основном полезно для самозаверяющих сертификатов или для собственных центров сертификации.
Обратите внимание, что это поддерживается только в случае использования бэкэнда cryptography!
AuthorityKeyIdentifier будет добавлен только в том случае, если указан хотя бы один из authority_key_identifier, authority_cert_issuer и authority_cert_serial_number.
authority_cert_serial_number
integer
Серийный номер сертификата авторитета.
Обратите внимание, что это поддерживается только в случае использования бэкэнда cryptography!
Обратите внимание, что коммерческие центры сертификации игнорируют это значение, соответственно, используют значение по своему выбору. Указание этой опции в основном полезно для самозаверяющих сертификатов или для собственных центров сертификации.
AuthorityKeyIdentifier будет добавлен только в том случае, если указан хотя бы один из authority_key_identifier, authority_cert_issuer и authority_cert_serial_number.
authority_key_identifier
string
Идентификатор ключа авторитета в виде шестнадцатеричной строки, где два байта разделены двоеточиями.
Пример: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33
Если указано, authority_cert_issuer также должен быть указан.
Обратите внимание, что коммерческие центры сертификации игнорируют это значение, соответственно, используют значение по своему выбору. Указание этой опции в основном полезно для самозаверяющих сертификатов или для собственных центров сертификации.
Обратите внимание, что это поддерживается только в случае использования бэкэнда cryptography!
AuthorityKeyIdentifier будет добавлен только в том случае, если указан хотя бы один из authority_key_identifier, authority_cert_issuer и authority_cert_serial_number.
backup
boolean
    Choices:
  • no ←
  • yes
Создать резервную копию файла, включая метку времени, чтобы вы могли вернуть исходный CSR, если случайно перезаписали его новым.
basic_constraints
list / elements=string
Указывает основные ограничения, например, является ли сертификат центром сертификации.

aliases: basicConstraints
basic_constraints_critical
boolean
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение basicConstraints как критическое.

aliases: basicConstraints_critical
common_name
string
Поле commonName субъекта запроса на подпись сертификата.

aliases: CN, commonName
country_name
string
Поле countryName субъекта запроса на подпись сертификата.

aliases: C, countryName
create_subject_key_identifier
boolean
    Choices:
  • no ←
  • yes
Создать идентификатор ключа субъекта из открытого ключа.
Обратите внимание, что коммерческие центры сертификации могут игнорировать значение, соответственно, использовать значение по своему выбору.
Обратите внимание, что это поддерживается только в случае использования бэкэнда cryptography!
digest
string
Default:
"sha256"
Хеш-функция, используемая при подписании запроса на подпись сертификата закрытым ключом.
email_address
string
Поле emailAddress субъекта запроса на подпись сертификата.

aliases: E, emailAddress
extended_key_usage
list / elements=string
Дополнительные ограничения (например, аутентификация клиента, аутентификация сервера) на разрешенные цели, для которых может использоваться открытый ключ.

aliases: extKeyUsage, extendedKeyUsage
extended_key_usage_critical
boolean
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение extkeyUsage как критическое.

aliases: extKeyUsage_critical, extendedKeyUsage_critical
force
boolean
    Choices:
  • no ←
  • yes
Следует ли принудительно перегенерировать запрос на подпись сертификата этим модулем Ansible.
group
string
Имя группы, которой должен принадлежать файл/каталог, как если бы он был передан в chown.
key_usage
list / elements=string
Это определяет назначение (например, шифрование, подпись, подпись сертификата) ключа, содержащегося в сертификате.

aliases: keyUsage
key_usage_critical
boolean
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение keyUsage как критическое.

aliases: keyUsage_critical
locality_name
string
Поле localityName субъекта запроса на подпись сертификата.

aliases: L, localityName
mode
raw
Разрешения, которые должен иметь результирующий файл или каталог.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы на самом деле являются восьмеричными числами. Вы должны либо добавить ведущий ноль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число.
Предоставление Ansible числа без соблюдения одного из этих правил приведет к десятичному числу, которое даст неожиданные результаты.
Начиная с Ansible 1.8, режим может быть указан как символический режим (например, u+rwx или u=rw,g=r,o=r).
name_constraints_critical
boolean
added in 1.1.0 of community.crypto
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение Name Constraints как критическое.
name_constraints_excluded
list / elements=string
added in 1.1.0 of community.crypto
Для сертификатов ЦС это указывает список идентификаторов, которые описывают поддеревья имен, для которых этот ЦС *не* разрешено выдавать сертификаты.
Значения должны быть предваряться их опциями. (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, которые специфичны для вашего центра сертификации).
name_constraints_permitted
list / elements=string
added in 1.1.0 of community.crypto
Для сертификатов ЦС это указывает список идентификаторов, которые описывают поддеревья имен, для которых этому ЦС разрешено выдавать сертификаты.
Значения должны быть предваряться их опциями. (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, которые специфичны для вашего центра сертификации).
ocsp_must_staple
boolean
    Choices:
  • no ←
  • yes
Указывает, что сертификат должен содержать расширение OCSP Must Staple (https://tools.ietf.org/html/rfc7633).

aliases: ocspMustStaple
ocsp_must_staple_critical
boolean
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение OCSP Must Staple как критическое.
Обратите внимание, что в соответствии с RFC это расширение не должно быть помечено как критическое, так как старые клиенты, не знающие об OCSP Must Staple, должны отклонять такие сертификаты (см. https://tools.ietf.org/html/rfc7633#section-4).

aliases: ocspMustStaple_critical
organization_name
string
Поле organizationName субъекта запроса на подпись сертификата.

aliases: O, organizationName
organizational_unit_name
string
Поле organizationalUnitName субъекта запроса на подпись сертификата.

aliases: OU, organizationalUnitName
owner
string
Имя пользователя, которому должен принадлежать файл/каталог, как это было бы передано в chown.
path
path / required
Имя файла, в который будет записан сгенерированный запрос на подпись сертификата OpenSSL.
privatekey_content
string
added in 1.0.0 of community.crypto
Содержимое закрытого ключа, используемого при подписании запроса на подпись сертификата.
Необходимо указать либо privatekey_path, либо privatekey_content, если state имеет значение present, но не оба одновременно.
privatekey_passphrase
string
Пароль для закрытого ключа.
Это необходимо, если закрытый ключ защищен паролем.
privatekey_path
path
Путь к закрытому ключу, используемому при подписании запроса на подпись сертификата.
Необходимо указать либо privatekey_path, либо privatekey_content, если state имеет значение present, но не оба одновременно.
return_content
boolean
added in 1.0.0 of community.crypto
    Choices:
  • no ←
  • yes
Если установлено в yes, вернет содержимое CSR (текущее или сгенерированное) как csr.
select_crypto_backend
string
    Choices:
  • auto ←
  • cryptography
  • pyopenssl
Определяет, какой криптографический бэкэнд использовать.
Выбор по умолчанию — auto, который пытается использовать cryptography, если доступен, и возвращается к pyopenssl.
Если установлено в pyopenssl, будет пытаться использовать библиотеку pyOpenSSL.
Если установлено в cryptography, будет пытаться использовать библиотеку cryptography.
Обратите внимание, что бэкэнд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. С этого момента будет доступен только бэкэнд cryptography.
selevel
string
Часть уровня контекста файла SELinux.
Это атрибут MLS/MCS, иногда известный как range.
При установке в _default, будет использоваться часть level политики, если доступна.
serole
string
Часть роли контекста файла SELinux.
При установке в _default, будет использоваться часть role политики, если доступна.
setype
string
Часть типа контекста файла SELinux.
При установке в _default, будет использоваться часть type политики, если доступна.
seuser
string
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, если применимо.
При установке в _default, будет использоваться часть user политики, если доступна.
state
string
    Choices:
  • absent
  • present ←
Должен ли существовать запрос на подпись сертификата или нет, предпринимая действия, если состояние отличается от указанного.
state_or_province_name
string
Поле stateOrProvinceName субъекта запроса на подпись сертификата.

aliases: ST, stateOrProvinceName
subject
dictionary
Пары ключ/значение, которые будут присутствовать в поле имени субъекта запроса на подпись сертификата.
Если вам нужно указать более одного значения с одним и тем же ключом, используйте список в качестве значения.
subject_alt_name
list / elements=string
Расширение Subject Alternative Name (SAN), которое нужно прикрепить к запросу на подпись сертификата.
Это может быть либо «строка, разделенная запятыми», либо список YAML.
Значения должны быть снабжены префиксом их параметров. (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, которые специфичны для вашего ЦС).
Обратите внимание, что если SAN не указан, но указано общее имя, общее имя будет добавлено как SAN, если только useCommonNameForSAN не установлено в false.
Подробнее на https://tools.ietf.org/html/rfc5280#section-4.2.1.6.

aliases: subjectAltName
subject_alt_name_critical
boolean
    Choices:
  • no ←
  • yes
Следует ли рассматривать расширение subjectAltName как критическое.

aliases: subjectAltName_critical
subject_key_identifier
string
Идентификатор ключа субъекта в виде шестнадцатеричной строки, где два байта разделены двоеточиями.
Пример: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33
Обратите внимание, что коммерческие ЦС игнорируют это значение, соответственно, используют значение по своему выбору. Указание этого параметра в основном полезно для самозаверяющих сертификатов или для собственных ЦС.
Обратите внимание, что этот параметр может использоваться только в том случае, если create_subject_key_identifier имеет значение no.
Обратите внимание, что это поддерживается только в случае использования бэкэнда cryptography!
unsafe_writes
boolean
added in 2.2 of ansible.builtin
    Choices:
  • no ←
  • yes
Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто сломаны таким образом, что это предотвращается. Одним из примеров являются файлы, смонтированные в docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (однако это не заставляет Ansible выполнять небезопасную запись).
ВАЖНО! Небезопасная запись подвержена условиям гонки и может привести к повреждению данных.
use_common_name_for_san
boolean
    Choices:
  • no
  • yes ←
Если установлено в yes, модуль заполнит общее имя для subject_alt_name с префиксом DNS:, если SAN не указан.

aliases: useCommonNameForSAN
version
integer
Default:
1
Версия запроса на подпись сертификата.
Единственное допустимое значение в соответствии с RFC 2986 — 1.
Этот параметр больше не будет принимать неподдерживаемые значения с community.crypto 2.0.0.

Примечания

Примечание

  • Если запрос на подпись сертификата уже существует, будет проверено, содержат ли subjectAltName, keyUsage, extendedKeyUsage и basicConstraints только запрошенные значения, является ли OCSP Must Staple таким, как запрошено, и был ли запрос подписан указанным закрытым ключом.

См. также

См. также

community.crypto.openssl_csr_pipe

Официальная документация по модулю community.crypto.openssl_csr_pipe.

community.crypto.x509_certificate

Официальная документация по модулю community.crypto.x509_certificate.

community.crypto.x509_certificate_pipe

Официальная документация по модулю community.crypto.x509_certificate_pipe.

community.crypto.openssl_dhparam

Официальная документация по модулю community.crypto.openssl_dhparam.

community.crypto.openssl_pkcs12

Официальная документация по модулю community.crypto.openssl_pkcs12.

community.crypto.openssl_privatekey

Официальная документация по модулю community.crypto.openssl_privatekey.

community.crypto.openssl_privatekey_pipe

Официальная документация по модулю community.crypto.openssl_privatekey_pipe.

community.crypto.openssl_publickey

Официальная документация по модулю community.crypto.openssl_publickey.

community.crypto.openssl_csr_info

Официальная документация по модулю community.crypto.openssl_csr_info.

Примеры

- name: Generate an OpenSSL Certificate Signing Request
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with an inline key
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_content: "{{ private_key_content }}"
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with a passphrase protected private key
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    privatekey_passphrase: ansible
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with Subject information
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    country_name: FR
    organization_name: Ansible
    email_address: jdoe@ansible.com
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with subjectAltName extension
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    subject_alt_name: 'DNS:www.ansible.com,DNS:m.ansible.com'

- name: Generate an OpenSSL CSR with subjectAltName extension with dynamic list
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    subject_alt_name: "{{ item.value | map('regex_replace', '^', 'DNS:') | list }}"
  with_dict:
    dns_server:
    - www.ansible.com
    - m.ansible.com

- name: Force regenerate an OpenSSL Certificate Signing Request
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    force: yes
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with special key usages
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
    key_usage:
      - digitalSignature
      - keyAgreement
    extended_key_usage:
      - clientAuth

- name: Generate an OpenSSL Certificate Signing Request with OCSP Must Staple
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
    ocsp_must_staple: yes

- name: Generate an OpenSSL Certificate Signing Request for WinRM Certificate authentication
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/winrm.auth.csr
    privatekey_path: /etc/ssl/private/winrm.auth.pem
    common_name: username
    extended_key_usage:
    - clientAuth
    subject_alt_name: otherName:1.3.6.1.4.1.311.20.2.3;UTF8:username@localhost

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

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

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

Пример:
/path/to/www.ansible.com.csr.2019-03-09@11:22~
basicConstraints
список / элементы=строка
изменено или успех
Указывает, принадлежит ли сертификат ЦС

Пример:
['CA:TRUE', 'pathLenConstraint:0']
csr
строка
добавлено в версии 1.0.0 community.crypto
если state is present и return_content is yes
Содержимое (текущего или сгенерированного) CSR.

extendedKeyUsage
список / элементы=строка
изменено или успех
Дополнительные ограничения на цели использования открытого ключа

Пример:
['clientAuth']
filename
строка
изменено или успех
Путь к сгенерированному запросу на подпись сертификата

Пример:
/etc/ssl/csr/www.ansible.com.csr
keyUsage
список / элементы=строка
изменено или успех
Цель, для которой может использоваться открытый ключ

Пример:
['digitalSignature', 'keyAgreement']
name_constraints_excluded
список / элементы=строка
добавлено в версии 1.1.0 community.crypto
изменено или успех
Список исключенных поддеревьев, для которых ЦС не может подписывать сертификаты.

Пример:
['email:.com']
name_constraints_permitted
список / элементы=строка
добавлено в версии 1.1.0 community.crypto
изменено или успех
Список разрешенных поддеревьев для подписи сертификатов.

Пример:
['email:.somedomain.com']
ocsp_must_staple
логическое
изменено или успех
Указывает, включена ли в сертификате функция OCSP Must Staple

privatekey
строка
изменено или успех
Путь к закрытому ключу TLS/SSL, для которого был сгенерирован CSR
Будет none если закрытый ключ был предоставлен в privatekey_content.

Пример:
/etc/ssl/private/ansible.com.pem
subject
список / элементы=список
изменено или успех
Список кортежей субъектов, прикрепленных к CSR

Пример:
[('CN', 'www.ansible.com'), ('O', 'Ansible')]
subjectAltName
список / элементы=строка
изменено или успех
Альтернативные имена, для которых действителен этот CSR

Пример:
['DNS:www.ansible.com', 'DNS:m.ansible.com']


Авторы

  • Yanis Guenane (@Spredzy)
  • Felix Fontein (@felixfontein)

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/crypto/openssl_csr_module.html

Spec-Zone.ru

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