community.crypto.openssl_csr_pipe – Генерация запроса на подписание сертификата OpenSSL (CSR)
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в книге задач укажите: community.crypto.openssl_csr_pipe.
Введено в версии 1.3.0: of community.crypto
Обзор
- Обратите внимание, что модуль перегенерирует существующий CSR, если он не соответствует параметрам модуля или кажется повреждённым.
- Модуль может использовать библиотеку 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
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| authority_cert_issuer список / элементы=строка | Имена, которые будут присутствовать в поле authority cert 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. | |
| basic_constraints список / элементы=строка | Указывает основные ограничения, такие как является ли сертификат CA. алиасы: basicConstraints | |
| basic_constraints_critical булево |
| Должен ли расширение basicConstraints рассматриваться как критическое. алиасы: basicConstraints_critical |
| common_name строка | Поле commonName субъекта запроса на подписание сертификата. алиасы: CN, commonName | |
| content строка | Существующий запрос на подписание сертификата (CSR). | |
| country_name строка | Поле countryName субъекта запроса на подписание сертификата. алиасы: C, countryName | |
| create_subject_key_identifier булево |
| Создать идентификатор ключа субъекта из открытого ключа. Обратите внимание, что коммерческие CA могут игнорировать значение, соответственно использовать своё собственное. Указание этого параметра полезно в основном для самозаверяющих сертификатов или для собственных CA. Обратите внимание, что это поддерживается только если используется cryptography бэкенд! |
| digest строка | Значение по умолчанию: "sha256" | Хеш-функция, используемая при подписании запроса на подписание сертификата с использованием закрытого ключа. |
| email_address строка | Поле emailAddress субъекта запроса на подписание сертификата. алиасы: E, emailAddress | |
| extended_key_usage список / элементы=строка | Дополнительные ограничения (например, аутентификация клиента, аутентификация сервера) на допустимые цели, для которых может быть использован открытый ключ. алиасы: extKeyUsage, extendedKeyUsage | |
| extended_key_usage_critical булево |
| Должен ли расширение extkeyUsage рассматриваться как критическое. алиасы: extKeyUsage_critical, extendedKeyUsage_critical |
| key_usage список / элементы=строка | Определяет назначение (например, шифрование, подпись, подписание сертификатов) ключа, содержащегося в сертификате. алиасы: keyUsage | |
| key_usage_critical булево |
| Должен ли расширение keyUsage рассматриваться как критическое. алиасы: keyUsage_critical |
| locality_name строка | Поле localityName субъекта запроса на подписание сертификата. алиасы: L, localityName | |
| name_constraints_critical булево |
| Должен ли расширение Name Constraints рассматриваться как критическое. |
| name_constraints_excluded список / элементы=строка | Для сертификатов CA, это указывает список идентификаторов, которые описывают поддеревья имён, для которых эта CA не имеет права выдавать сертификаты. Значения должны быть префиксными (т.е., email, URI, DNS, RID, IP, dirName, otherName и те, которые специфичны для вашего CA). | |
| name_constraints_permitted список / элементы=строка | Для сертификатов 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 | |
| privatekey_content строка | Содержимое закрытого ключа, используемого при подписании запроса на подписание сертификата. Если state равно present, необходимо указать либо privatekey_path, либо privatekey_content, но не оба одновременно. | |
| privatekey_passphrase строка | Пароль к закрытому ключу. Требуется, если закрытый ключ защищён паролем. | |
| privatekey_path путь | Путь к закрытому ключу, используемому при подписании запроса на подписание сертификата. Если state равно present, необходимо указать либо privatekey_path, либо privatekey_content, но не оба одновременно. | |
| select_crypto_backend строка |
| Определяет, какой криптографический бэкенд использовать. Значение по умолчанию — auto, которое пытается использовать cryptography, если доступно, и переходит на pyopenssl. Если установлено значение pyopenssl, будет попытка использования библиотеки pyOpenSSL.Если установлено значение cryptography, будет попытка использования библиотеки cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. С этого момента будет доступен только бэкенд cryptography. |
| state_or_province_name строка | Поле stateOrProvinceName субъекта запроса на подписание сертификата. алиасы: ST, stateOrProvinceName | |
| subject словарь | Ключ/значение пары, которые будут присутствовать в поле имени субъекта запроса на подписание сертификата. Если вам нужно указать более одного значения с одинаковым ключом, используйте список в качестве значения. |
| имя_альтернативное_темы список / элементы=строка | Расширение имени альтернативного субъекта (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 | |
| имя_альтернативное_темы_критическое булево |
| Следует ли рассматривать расширение subjectAltName как критическое. псевдонимы: subjectAltName_critical |
| идентификатор_ключа_субъекта строка | Идентификатор ключа субъекта в формате шестнадцатеричной строки, где два байта разделены двоеточиями. Пример: 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. | |
| использовать_общее_имя_для_san булево |
| Если установлено значение yes, модуль заполнит общее имя для subject_alt_name с префиксом DNS:, если SAN не указан.псевдонимы: useCommonNameForSAN |
| версия целое число | По умолчанию: 1 | Версия запроса на подписание сертификата. Единственное допустимое значение согласно RFC 2986 — 1. Этот параметр больше не будет принимать недопустимые значения с community.crypto 2.0.0. |
Примечания
Примечание
- Если запрос на подписание сертификата уже существует, он будет проверен на предмет того, содержат ли subjectAltName, keyUsage, extendedKeyUsage и basicConstraints только запрошенные значения, соответствует ли OCSP Must Staple запросу и подписан ли запрос указанным закрытым ключом.
См. также
См. также
- community.crypto.openssl_csr
-
Официальная документация модуля community.crypto.openssl_csr.
- 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_pipe:
privatekey_path: /etc/ssl/private/ansible.com.pem
common_name: www.ansible.com
register: result
- debug:
var: result.csr
- name: Generate an OpenSSL Certificate Signing Request with an inline CSR
community.crypto.openssl_csr:
content: "{{ lookup('file', '/etc/ssl/csr/www.ansible.com.csr') }}"
privatekey_content: "{{ private_key_content }}"
common_name: www.ansible.com
register: result
- name: Store CSR
ansible.builtin.copy:
dest: /etc/ssl/csr/www.ansible.com.csr
content: "{{ result.csr }}"
when: result is changed
Возвращаемые значения
Общие возвращаемые значения описаны в этом разделе, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| basicConstraints список / элементы=строка | изменено или успешно | Указывает, принадлежит ли сертификат ЦС. Пример: ['CA:TRUE', 'pathLenConstraint:0'] |
| csr строка | изменено или успешно | Содержание (текущего или сгенерированного) CSR. |
| extendedKeyUsage список / элементы=строка | изменено или успешно | Дополнительные ограничения на цели открытого ключа. Пример: ['clientAuth'] |
| keyUsage список / элементы=строка | изменено или успешно | Назначение, для которого может использоваться открытый ключ. Пример: ['digitalSignature', 'keyAgreement'] |
| name_constraints_excluded список / элементы=строка | изменено или успешно | Список исключенных поддеревьев, для которых ЦС не может подписывать сертификаты. Пример: ['email:.com'] |
| name_constraints_permitted список / элементы=строка | изменено или успешно | Список разрешенных поддеревьев, для которых ЦС может подписывать сертификаты. Пример: ['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_pipe_module.html