community.crypto.openssl_csr_pipe – Генерация запроса на подписание сертификата OpenSSL (CSR)
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.4.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в playbook укажите: community.crypto.openssl_csr_pipe.
Новое в версии 1.3.0: модуля 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! | |
| 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 список / элементы=строка |
| Список причин, по которым этот пункт распределения можно использовать при проверке отзыва. | |
| relative_name список / элементы=строка | Описывает, как можно получить CRL относительно издателя CRL. Взаимоисключительно с full_name. Пример: /CN=example.com.Может быть использован только при установленной библиотеке криптографии версии >= 1.6. | ||
| 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 строка | Содержимое закрытого ключа, используемого при подписи запроса на подписание сертификата. Либо privatekey_path, либо privatekey_content должны быть указаны, если state равно present, но не оба. | ||
| privatekey_passphrase строка | Пароль для закрытого ключа. Это необходимо, если закрытый ключ защищен паролем. | ||
| privatekey_path path | Путь к закрытому ключу, который будет использоваться для подписи запроса на сертификат. Если параметр state имеет значение present, необходимо указать либо privatekey_path, либо privatekey_content, но не оба. | ||
| select_crypto_backend string |
| Определяет, какой криптографический бэкенд использовать. По умолчанию выбрано auto, которое пытается использовать cryptography при его наличии, а в противном случае использует pyopenssl. Если установлено значение pyopenssl, будет использоваться библиотека pyOpenSSL.Если установлено значение cryptography, будет использоваться библиотека cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. Начиная с этого момента, доступен только бэкенд cryptography. | |
| state_or_province_name string | Поле stateOrProvinceName в субъекте запроса на сертификат. псевдонимы: ST, stateOrProvinceName | ||
| subject dictionary | Пара ключ/значение, которые будут присутствовать в поле имени субъекта запроса на сертификат. Если необходимо указать несколько значений с одинаковым ключом, используйте список в качестве значения. | ||
| subject_alt_name list / elements=string | Расширение 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 boolean |
| Должен ли параметр subjectAltName рассматриваться как критический. псевдонимы: 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! | ||
| use_common_name_for_san boolean |
| Если установлено значение yes, модуль заполнит общее имя для subject_alt_name префиксом DNS:, если SAN не указан.псевдонимы: useCommonNameForSAN | |
| version integer | По умолчанию: 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 list / elements=string | changed или success | Указывает, является ли сертификат сертификатом CA. Пример: ['CA:TRUE', 'pathLenConstraint:0'] |
| csr string | changed или success | Содержимое (текущего или сгенерированного) CSR. |
| extendedKeyUsage list / elements=string | changed или success | Дополнительные ограничения на цели использования открытого ключа. Пример: ['clientAuth'] |
| keyUsage list / elements=string | changed или success | Назначение, для которого может использоваться открытый ключ. Пример: ['digitalSignature', 'keyAgreement'] |
| name_constraints_excluded list / elements=string | changed или success | Список исключенных поддеревьев, для которых CA не может подписать сертификаты. Пример: ['email:.com'] |
| name_constraints_permitted list / elements=string | changed или success | Список разрешенных поддеревьев, для которых CA может подписать сертификаты. Пример: ['email:.somedomain.com'] |
| ocsp_must_staple boolean | changed или success | Указывает, включена ли функция OCSP Must Staple для сертификата. |
| privatekey string | changed или success | Путь к закрытому ключу TLS/SSL, для которого был сгенерирован CSR. Будет none если закрытый ключ был предоставлен в privatekey_content.Пример: /etc/ssl/private/ansible.com.pem |
| subject list / elements=list | changed или success | Список кортежей субъектов, прикрепленных к CSR. Пример: [('CN', 'www.ansible.com'), ('O', 'Ansible')] |
| subjectAltName list / elements=string | changed или success | Альтернативные имена, для которых этот 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_pipe_module.html