openssl_csr – Генерация запроса на подпись сертификата OpenSSL (CSR)
Новая версия 2.4.
Описание
- Этот модуль позволяет (снова) сгенерировать запрос на подпись сертификата OpenSSL.
- Он использует библиотеку pyOpenSSL для взаимодействия с openssl. Этот модуль поддерживает расширения subjectAltName, keyUsage, extendedKeyUsage, basicConstraints и OCSP Must Staple.
- Обратите внимание, что модуль перегенерирует существующий CSR, если он не соответствует параметрам модуля или если он кажется повреждённым. Если вы обеспокоены тем, что это может перезаписать ваш существующий CSR, рассмотрите использование параметра backup.
Требования
Ниже приведены требования к хосту, на котором будет выполняться этот модуль.
- Библиотека cryptography >= 1.3
- Или pyOpenSSL >= 0.15
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка добавлен в 2.3 | Атрибуты, которые должен иметь результирующий файл или директория. Для получения поддерживаемых флагов см. страницу справки для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении lsattr. Оператор = предполагается по умолчанию, в противном случае операторы + или - необходимо включить в строку.псевдонимы: attr | |
| backup булево добавлен в 2.8 |
| Создать резервную копию файла, включая отметку времени, чтобы вы могли восстановить исходный CSR, если случайно перезаписали его новым. |
| basic_constraints список добавлен в 2.5 | Указывает базовые ограничения, например, является ли сертификат центром сертификации. псевдонимы: basicConstraints | |
| basic_constraints_critical булево добавлен в 2.5 |
| Должен ли расширение basicConstraints рассматриваться как критическое. псевдонимы: basicConstraints_critical |
| common_name строка | Поле commonName в запросе на подписание сертификата. псевдонимы: CN, commonName | |
| country_name строка | Поле countryName в запросе на подписание сертификата. псевдонимы: C, countryName | |
| 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 булево добавлен в 2.5 |
| Должно ли расширение 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_passphrase строка | Пароль к закрытому ключу. Необходим, если закрытый ключ защищен паролем. | |
| privatekey_path путь | Путь к закрытому ключу, который необходимо использовать при подписании запроса на подписание сертификата. Обязательно, если state равно present. | |
| select_crypto_backend строка добавлен в 2.8 |
| Определяет, какой криптографический бэкенд использовать. Значение по умолчанию auto, которое пытается использовать cryptography, если оно доступно, и переходит к pyopenssl. Если установлено значение pyopenssl, будет использована библиотека pyOpenSSL.Если установлено значение cryptography, будет использована библиотека cryptography. |
| selevel строка | Значение по умолчанию: "s0" | Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. Когда установлено _default, используется часть политики level, если она доступна. |
| serole строка | Часть контекста файла 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 | Расширение 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 |
| unsafe_writes boolean Добавлен в 2.2 |
| Влияет на то, когда следует использовать атомную операцию для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто не работают таким образом, что это не позволяет. Одним из примеров являются файлы, смонтированные в 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 string | changed и если backup — yes
| Имя созданного файла резервной копии. Пример: /path/to/www.ansible.com.csr.2019-03-09@11:22~ |
| basicConstraints list | changed или success | Указывает, принадлежит ли сертификат ЦС Пример: ['CA:TRUE', 'pathLenConstraint:0'] |
| extendedKeyUsage list | changed или success | Дополнительные ограничения на цели использования открытого ключа Пример: ['clientAuth'] |
| filename string | changed или success | Путь к сгенерированному запросу на подписание сертификата Пример: /etc/ssl/csr/www.ansible.com.csr |
| keyUsage list | changed или success | Цель использования открытого ключа Пример: ['digitalSignature', 'keyAgreement'] |
| ocsp_must_staple boolean | changed или success | Указывает, включена ли функция OCSP Must Staple в сертификате |
| privatekey string | changed или success | Путь к закрытому ключу TLS/SSL, для которого был сгенерирован запрос CSR Пример: /etc/ssl/private/ansible.com.pem |
| subject list | changed или success | Список кортежей субъектов, прикрепленных к CSR Пример: [('CN', 'www.ansible.com'), ('O', 'Ansible')] |
| subjectAltName list | changed или success | Альтернативные имена, для которых этот CSR действителен Пример: ['DNS:www.ansible.com', 'DNS:m.ansible.com'] |
Статус
- Интерфейс этого модуля не гарантируется как обратная совместимость. [preview]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- 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.8/modules/openssl_csr_module.html