Spec-Zone.ru › Ansible 2.11

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

Примечание

Этот плагин входит в коллекцию community.crypto (версия 1.4.0).

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

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

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

Обзор

  • Обратите внимание, что модуль пересоздаёт существующий CSR, если он не соответствует параметрам модуля или кажется повреждённым. Если вы беспокоитесь о перезаписи существующего CSR, рассмотрите использование параметра backup.
  • Модуль может использовать библиотеку cryptography Python или pyOpenSSL Python. По умолчанию он пытается определить, какая из них доступна. Это можно переопределить с помощью параметра 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

Параметры

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

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

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

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

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

псевдонимы: C, countryName
create_subject_key_identifier
булево
    Варианты:
  • нет ←
  • да
Создать идентификатор ключа субъекта из открытого ключа.
Обратите внимание, что коммерческие CA могут игнорировать это значение или использовать своё по умолчанию. Указание этого параметра полезно в основном для самоподписанных сертификатов или для собственных CA.
Обратите внимание, что это поддерживается только если используется бэкенд cryptography.
crl_distribution_points
список / элементы=словарь
добавлен в 1.4.0 модуля community.crypto
Позволяет указать одну или несколько точек распространения CRL.
Поддерживается только бэкендом cryptography.
crl_issuer
список / элементы=строка
Информация об издателе CRL.
full_name
список / элементы=строка
Описывает, как можно получить CRL.
Взаимоисключающие с relative_name.
Пример: URI:https://ca.example.com/revocations.crl.
reasons
список / элементы=строка
    Варианты:
  • key_compromise
  • ca_compromise
  • affiliation_changed
  • superseded
  • cessation_of_operation
  • certificate_hold
  • privilege_withdrawn
  • aa_compromise
Список причин, по которым эта точка распространения может быть использована при проверке отзыва.
relative_name
список / элементы=строка
Описывает, как можно получить CRL относительно издателя CRL.
Взаимоисключающие с full_name.
Пример: /CN=example.com.
Может быть использован только при установке cryptography >= 1.6.
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, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую нуль, чтобы интерпретатор YAML Ansible понял, что это восьмеричное число (например, 0644 или 01777), или заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число.
Передача Ansible числа без выполнения одного из этих правил приведет к десятичному числу, что повлечет за собой непредвиденные результаты.
Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
Если mode не указано, а целевой файл не существует, значение по умолчанию umask на системе будет использоваться при установке режима для вновь созданного файла.
Если mode не указано, а целевой файл существует, режим существующего файла будет использован.
Указание mode — лучший способ гарантировать, что файлы создаются с правильными разрешениями. См. CVE-2020-1736 для получения дополнительной информации.
name_constraints_critical
булево
добавлен в 1.1.0 модуля community.crypto
    Варианты:
  • нет ←
  • да
Должен ли расширение Name Constraints рассматриваться как критическое.
name_constraints_excluded
список / элементы=строка
добавлен в 1.1.0 модуля community.crypto
Для сертификатов CA это определяет список идентификаторов, которые описывают поддеревья имён, для которых эта CA не имеет права выдавать сертификаты.
Значения должны быть префиксрованы соответствующими опциями. (например, email, URI, DNS, RID, IP, dirName, otherName, и те, которые специфичны для вашего CA).
name_constraints_permitted
список / элементы=строка
добавлено в 1.1.0 community.crypto
Для сертификатов CA это определяет список идентификаторов, которые описывают поддеревья имён, для которых этот CA разрешено выдавать сертификаты.
Значения должны быть префиксными своими параметрами. (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, что специфичны для вашего CA).
ocsp_must_staple
булево
    Варианты:
  • нет ←
  • да
Указывает, что сертификат должен содержать расширение OCSP Must Staple (https://tools.ietf.org/html/rfc7633).

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

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

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

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

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

псевдонимы: subjectAltName
subject_alt_name_critical
булево
    Варианты:
  • нет ←
  • да
Должно ли расширение subjectAltName рассматриваться как критическое.

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

псевдонимы: useCommonNameForSAN
version
целое число
По умолчанию:
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

- name: Generate an OpenSSL Certificate Signing Request with a CRL distribution point
  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
    crl_distribution_points:
      - full_name:
          - "URI:https://ca.example.com/revocations.crl"
        crl_issuer:
          - "URI:https://ca.example.com/"
        reasons:
          - key_compromise
          - ca_compromise
          - cessation_of_operation

Значения возврата

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

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

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

Пример:
['CA:TRUE', 'pathLenConstraint:0']
csr
строка
добавлен в версии 1.0.0 community.crypto
если state present и return_content 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/crypto/openssl_csr_module.html

Spec-Zone.ru

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