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 |
| Следует ли считать расширение 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.Если установлено 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 |
| Указывает, должен ли существовать запрос на подписание сертификата или нет, выполняя действия, если состояние отличается от указанного. |
| 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 |
| Следует ли считать расширение 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 |
| Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто работают таким образом, что это невозможно. Одним из примеров являются файлы, смонтированные в Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции не удаются (однако это не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| use_common_name_for_san boolean добавлено в 2.8 |
| Если установлено значение 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