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 |
| Создать резервную копию файла, включая метку времени, чтобы вы могли вернуть исходный CSR, если случайно перезаписали его новым. |
| basic_constraints list / elements=string | Указывает основные ограничения, например, является ли сертификат центром сертификации. aliases: basicConstraints | |
| basic_constraints_critical boolean |
| Следует ли рассматривать расширение basicConstraints как критическое. aliases: basicConstraints_critical |
| common_name string | Поле commonName субъекта запроса на подпись сертификата. aliases: CN, commonName | |
| country_name string | Поле countryName субъекта запроса на подпись сертификата. aliases: C, countryName | |
| create_subject_key_identifier boolean |
| Создать идентификатор ключа субъекта из открытого ключа. Обратите внимание, что коммерческие центры сертификации могут игнорировать значение, соответственно, использовать значение по своему выбору. Обратите внимание, что это поддерживается только в случае использования бэкэнда 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 |
| Следует ли рассматривать расширение extkeyUsage как критическое. aliases: extKeyUsage_critical, extendedKeyUsage_critical |
| force boolean |
| Следует ли принудительно перегенерировать запрос на подпись сертификата этим модулем Ansible. |
| group string | Имя группы, которой должен принадлежать файл/каталог, как если бы он был передан в chown. | |
| key_usage list / elements=string | Это определяет назначение (например, шифрование, подпись, подпись сертификата) ключа, содержащегося в сертификате. aliases: keyUsage | |
| key_usage_critical boolean |
| Следует ли рассматривать расширение 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 |
| Следует ли рассматривать расширение 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 |
| Указывает, что сертификат должен содержать расширение OCSP Must Staple (https://tools.ietf.org/html/rfc7633). aliases: ocspMustStaple |
| ocsp_must_staple_critical boolean |
| Следует ли рассматривать расширение 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 |
| Если установлено в yes, вернет содержимое CSR (текущее или сгенерированное) как csr. |
| select_crypto_backend string |
| Определяет, какой криптографический бэкэнд использовать. Выбор по умолчанию — 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 |
| Должен ли существовать запрос на подпись сертификата или нет, предпринимая действия, если состояние отличается от указанного. |
| 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 |
| Следует ли рассматривать расширение 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 |
| Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто сломаны таким образом, что это предотвращается. Одним из примеров являются файлы, смонтированные в docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (однако это не заставляет Ansible выполнять небезопасную запись). ВАЖНО! Небезопасная запись подвержена условиям гонки и может привести к повреждению данных. |
| use_common_name_for_san boolean |
| Если установлено в 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