Spec-Zone.ru › Ansible 2.9

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

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

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

Обзор

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

Требования

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

  • Библиотека cryptography >= 1.3
  • Или библиотека pyOpenSSL >= 0.15

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
строка
Атрибуты, которые должны быть у результирующего файла или директории.
Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и в выводе команды lsattr.
Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.

псевдонимы: attr
authority_cert_issuer
список / элементы=строка
добавлен в 2.9
Имена, которые будут присутствовать в поле authority cert issuer запроса на подписание сертификата.
Значения должны быть префиксными их вариантами. (например, 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
целое число
добавлен в 2.9
Серийный номер сертификата ЦС.
Обратите внимание, что это поддерживается только при использовании бэкенда cryptography!
Обратите внимание, что коммерческие ЦС игнорируют это значение, соответственно используют значение по своему выбору. Указание этого параметра в основном полезно для самоподписанных сертификатов или для собственных ЦС.
AuthorityKeyIdentifier будет добавлен только в том случае, если указан хотя бы один из параметров authority_key_identifier, authority_cert_issuer и authority_cert_serial_number.
authority_key_identifier
строка
добавлен в 2.9
Идентификатор ключа ЦС в виде шестнадцатеричной строки, где два байта разделены двоеточиями.
Пример: 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
логическое значение
добавлен в 2.8
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая отметку времени, чтобы восстановить исходный запрос на подписание сертификата, если вы случайно перезаписали его новым.
basic_constraints
список / элементы=строка
добавлен в 2.5
Указывает базовые ограничения, такие как является ли сертификат ЦС.

псевдонимы: basicConstraints
basic_constraints_critical
логическое значение
добавлен в 2.5
    Варианты:
  • нет
  • да
Должен ли расширение basicConstraints считаться критическим.

псевдонимы: basicConstraints_critical
common_name
строка
Поле commonName субъекта запроса на подписание сертификата.

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

псевдонимы: C, countryName
create_subject_key_identifier
логическое значение
добавлен в 2.9
    Варианты:
  • нет ←
  • да
Создать идентификатор ключа субъекта из открытого ключа.
Обратите внимание, что коммерческие ЦС могут игнорировать значение, соответственно использовать значение по своему выбору. Указание этого параметра в основном полезно для самоподписанных сертификатов или для собственных ЦС.
Обратите внимание, что это поддерживается только при использовании бэкенда cryptography!
digest
строка
Значение по умолчанию:
"sha256"
Хеш-функция, используемая при подписи запроса на подписание сертификата закрытым ключом.
email_address
строка
Поле emailAddress субъекта запроса на подписание сертификата.

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

псевдонимы: extKeyUsage, extendedKeyUsage
extended_key_usage_critical
логическое значение
    Варианты:
  • нет
  • да
Должен ли расширение extkeyUsage считаться критическим.

псевдонимы: extKeyUsage_critical, extendedKeyUsage_critical
force
логическое значение
    Варианты:
  • нет ←
  • да
Запросить перегенерацию запроса на подписание сертификата этим модулем Ansible.
group
строка
Имя группы, которая должна владеть файлом/директорией (как в команде chown).
key_usage
список / элементы=строка
Определяет назначение (например, шифрование, подпись, подписание сертификата) ключа, содержащегося в сертификате.

псевдонимы: keyUsage
key_usage_critical
логическое значение
    Варианты:
  • нет
  • да
Должен ли расширение keyUsage считаться критическим.

псевдонимы: keyUsage_critical
locality_name
строка
Поле localityName субъекта запроса на подписание сертификата.

псевдонимы: L, localityName
mode
строка
Разрешения, которые должны быть у результирующего файла или директории.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую нуль, чтобы Ansible's YAML parser знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777') так, чтобы Ansible получал строку и мог выполнить преобразование из строки в число.
Если вы передадите Ansible число без одного из этих правил, он будет воспринимать его как десятичное число, что приведёт к непредсказуемым результатам.
Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
ocsp_must_staple
логическое значение
добавлен в 2.5
    Варианты:
  • нет
  • да
Указывает, что сертификат должен содержать расширение OCSP Must Staple (https://tools.ietf.org/html/rfc7633).

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

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

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

Псевдонимы: OU, organizationalUnitName
owner
string
Имя пользователя, который должен владеть файлом/каталогом, как это было бы передано в chown.
path
path / обязательно
Имя файла, в который будет записан сгенерированный запрос на подписание сертификата OpenSSL.
privatekey_passphrase
string
Пароль к закрытому ключу.
Требуется, если закрытый ключ защищён паролем.
privatekey_path
path
Путь к закрытому ключу, используемому для подписания запроса на подписание сертификата.
Требуется, если state равен present.
select_crypto_backend
string
добавлено в 2.8
    Варианты:
  • auto ←
  • cryptography
  • pyopenssl
Определяет, какой криптографический бэкенд использовать.
По умолчанию выбран auto, который пытается использовать cryptography при его наличии, и возвращается к pyopenssl.
Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.
Если установлено cryptography, попытается использовать библиотеку cryptography.
Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в Ansible 2.13. С этого момента доступен только бэкенд cryptography.
selevel
string
По умолчанию:
"s0"
Часть контекста файла SELinux.
Это атрибут MLS/MCS, иногда известный как range.
Если установлено значение _default, будет использоваться часть политики level, если она доступна.
serole
string
Часть роли контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики role, если она доступна.
setype
string
Часть типа контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики type, если она доступна.
seuser
string
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, если применимо.
Если установлено значение _default, будет использоваться часть политики user, если она доступна.
state
string
    Варианты:
  • absent
  • present ←
Указывает, должен ли существовать запрос на подписание сертификата или нет, выполняя действия, если состояние отличается от указанного.
state_or_province_name
string
Поле stateOrProvinceName в субъекте запроса на подписание сертификата.

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

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

Псевдонимы: subjectAltName_critical
subject_key_identifier
string
добавлено в 2.9
Идентификатор ключа субъекта в виде шестнадцатеричной строки, где два байта разделены двоеточиями.
Пример: 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
    Варианты:
  • no ←
  • yes
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованного чтения из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто работают таким образом, что это невозможно. Одним из примеров являются файлы, смонтированные в Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции не удаются (однако это не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
use_common_name_for_san
boolean
добавлено в 2.8
    Варианты:
  • no
  • yes ←
Если установлено значение yes, модуль заполнит общее имя в subject_alt_name с префиксом DNS:, если SAN не указан.

Псевдонимы: useCommonNameForSAN
version
integer
По умолчанию:
1
Версия запроса на подписание сертификата.
Единственное разрешённое значение согласно RFC 2986 — 1.

Примечания

Примечание

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

См. также

См. также

openssl_certificate – Создать и/или проверить сертификаты OpenSSL
Официальная документация модуля openssl_certificate.
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 an OpenSSL Certificate Signing Request
  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 a passphrase protected private key
  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
  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
  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
  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
  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
  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
  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

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

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

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

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

Пример:
['CA:TRUE', 'pathLenConstraint:0']
extendedKeyUsage
список / элементы=строка
изменено или успешно
Дополнительное ограничение на назначение открытого ключа

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

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

Пример:
['digitalSignature', 'keyAgreement']
ocsp_must_staple
булево
изменено или успешно
Указывает, включена ли функция OCSP Must Staple для сертификата

privatekey
строка
изменено или успешно
Путь к закрытому ключу TLS/SSL, для которого был сгенерирован запрос на подпись сертификата

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

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

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


Статус

  • Данному модулю не гарантируется обратная совместимость. [превью]
  • Данный модуль поддерживается сообществом Ansible. [сообщество]

Авторы

  • Yanis Guenane (@Spredzy)

Подсказка

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

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

Spec-Zone.ru

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