community.crypto.x509_certificate_pipe – Генерация и/или проверка сертификатов OpenSSL
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в книге задач укажите: community.crypto.x509_certificate_pipe.
Новое в версии 1.3.0: of community.crypto
Обзор
- Если доступны библиотеки cryptography и PyOpenSSL (и удовлетворяют минимальным требованиям к версии), cryptography будет предпочтительнее в качестве бэкэнда по сравнению с PyOpenSSL (если бэкэнд не принудительно установлен с помощью
select_crypto_backend). Обратите внимание, что бэкэнд PyOpenSSL был устаревшим в Ansible 2.9 и будет удален в community.crypto 2.0.0. - Он реализует понятие поставщика (например,
selfsigned,ownca,entrust) для вашего сертификата. - Он использует библиотеки pyOpenSSL или cryptography для взаимодействия с OpenSSL.
- Обратите внимание, что модуль перегенерирует существующий сертификат, если он не соответствует параметрам модуля или, если он кажется повреждённым. Если вы опасаетесь, что это может перезаписать ваш существующий сертификат, рассмотрите использование опции backup.
- Поставщик
owncaпредназначен для генерации сертификата OpenSSL, подписанного вашим собственным сертификатом CA (Certificate Authority) (самоподписанный сертификат). - Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- PyOpenSSL >= 0.15 или cryptography >= 1.6 (при использовании
selfsigned,owncaилиassertonlyпоставщика)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| content строка | Существующий сертификат. | |
| csr_content строка | Содержимое запроса на подписание сертификата (CSR), используемого для генерации этого сертификата. Взаимоисключительно с csr_path. | |
| csr_path путь | Путь к файлу запроса на подписание сертификата (CSR), используемого для генерации этого сертификата. Взаимоисключительно с csr_content. | |
| entrust_api_client_cert_key_path путь | Путь к закрытому ключу сертификата клиента, используемого для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_client_cert_path путь | Путь к сертификату клиента, используемому для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_key строка | Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_specification_path путь | По умолчанию: "https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml" | Путь к файлу спецификации, определяющему конфигурацию API Entrust Certificate Services (ECS). Позволяет хранить локальную копию спецификации, чтобы избежать загрузки каждый раз при использовании модуля. Используется только поставщиком entrust. |
| entrust_api_user строка | Имя пользователя для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_cert_type строка |
| Укажите тип запрашиваемого сертификата. Используется только поставщиком entrust. |
| entrust_not_after строка | По умолчанию: "+365d" | Дата, до которой сертификат будет действителен. Время может быть указано как относительно текущей даты, так и как абсолютная метка времени. Формат абсолютной метки времени ASN.1 TIME, например 2019-06-18.Формат относительного времени [+-]timespec, где timespec может быть целым числом + [w | d | h | m | s], например +365d или +32w1d2h.Время всегда интерпретируется как UTC. Обратите внимание, что для указания даты окончания действия выпущенного сертификата поддерживается только дата (день, месяц, год). Полная дата и время корректируются до EST (GMT -5:00) перед выдачей, что может привести к сертификату с датой окончания действия на один день раньше ожидаемой, если используется относительное время. Минимальный срок действия сертификата составляет 90 дней, максимальный — три года. Если это значение не указано, сертификат перестанет быть действительным через 365 дней с даты выдачи. Используется только поставщиком entrust. |
| entrust_requester_email строка | Электронная почта запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_requester_name строка | Имя запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_requester_phone строка | Номер телефона запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| force логическое значение |
| Сгенерировать сертификат, даже если он уже существует. |
| ownca_content строка | Содержимое сертификата CA (Удостоверяющего центра). Используется только поставщиком ownca.Взаимоисключительно с ownca_path. | |
| ownca_create_authority_key_identifier логическое значение |
| Создать идентификатор ключа авторитета из сертификата CA. Если в CSR был предоставлен идентификатор ключа авторитета, он игнорируется. Идентификатор ключа авторитета генерируется из идентификатора ключевого субъекта сертификата CA (если доступен). Если он недоступен, используется открытый ключ сертификата CA. Используется только поставщиком ownca.Обратите внимание, что эта функция поддерживается только с бэкендом cryptography! |
| ownca_create_subject_key_identifier строка |
| Создавать ли идентификатор ключа субъекта (SKI) из открытого ключа. Значение create_if_not_provided (по умолчанию) создает SKI только если он не предоставлен в CSR.Значение always_create всегда создает SKI. Если в CSR есть SKI, он игнорируется.Значение never_create никогда не создает SKI. Если в CSR есть SKI, он используется.Используется только поставщиком ownca.Обратите внимание, что эта функция поддерживается только с бэкендом cryptography! |
| ownca_digest строка | По умолчанию: "sha256" | Алгоритм хэширования для сертификата ownca.Используется только поставщиком ownca. |
| ownca_not_after строка | По умолчанию: "+3650d" | Дата окончания действия сертификата. Время может быть указано относительно текущей даты или как абсолютная метка времени. Время всегда интерпретируется как UTC. Формат: [+-]timespec | ASN.1 TIME, где timespec — целое число + [w | d | h | m | s], например +32w1d2h.Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат будет действовать 10 лет с момента выдачи. Используется только поставщиком ownca.На macOS 10.15 и более поздних версиях сертификаты сервера TLS должны иметь срок действия не более 825 дней. Подробнее см. https://support.apple.com/en-us/HT210176. |
| ownca_not_before строка | По умолчанию: "+0s" | Дата начала действия сертификата. Время может быть указано относительно текущей даты или как абсолютная метка времени. Время всегда интерпретируется как UTC. Формат: [+-]timespec | ASN.1 TIME, где timespec — целое число + [w | d | h | m | s], например +32w1d2h.Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат будет действовать с текущей даты. Используется только поставщиком ownca. |
| ownca_path путь | Путь к сертификату CA (Удостоверяющего центра). Используется только поставщиком ownca.Взаимоисключительно с ownca_content. | |
| ownca_privatekey_content строка | Содержимое закрытого ключа CA (Удостоверяющего центра) для подписи сертификата. Используется только поставщиком ownca.Взаимоисключительно с ownca_privatekey_path. | |
| ownca_privatekey_passphrase строка | Пароль к ownca_privatekey_path или ownca_privatekey_content. Используется только поставщиком ownca. | |
| ownca_privatekey_path путь | Путь к закрытому ключу CA (Удостоверяющего центра) для подписи сертификата. Используется только поставщиком ownca.Взаимоисключительно с ownca_privatekey_content. | |
| ownca_version целое число | По умолчанию: 3 | Версия сертификата ownca.В настоящее время почти всегда 3.Используется только поставщиком ownca. |
| privatekey_content строка | Содержимое закрытого ключа для подписи сертификата. Взаимоисключительно с privatekey_path. |
| privatekey_passphrase строка | Пароль для privatekey_path или privatekey_content. Требуется, если закрытый ключ защищён паролем. | |
| privatekey_path путь | Путь к закрытому ключу, используемому для подписания сертификата. Взаимоисключающее с privatekey_content. | |
| provider строка / обязательно |
| Имя поставщика для генерации/получения сертификата OpenSSL. Для поставщика entrust требуются учетные данные для API Entrust Certificate Services (ECS). |
| select_crypto_backend строка |
| Определяет используемый криптографический бэкенд. По умолчанию выбран auto, который пытается использовать cryptography, если доступен, и переходит к pyopenssl.Если установлено pyopenssl, будет использоваться библиотека pyOpenSSL.Если установлено cryptography, будет использоваться библиотека cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удалён в community.crypto 2.0.0. С этого момента доступен только бэкенд cryptography. |
| selfsigned_create_subject_key_identifier строка |
| Создавать ли идентификатор Subject Key Identifier (SKI) из открытого ключа. Значение create_if_not_provided (по умолчанию) создаёт SKI только тогда, когда CSR его не предоставляет.Значение always_create всегда создаёт SKI. Если CSR предоставляет SKI, он игнорируется.Значение never_create никогда не создаёт SKI. Если CSR предоставляет SKI, он используется.Используется только поставщиком selfsigned. Обратите внимание, что это поддерживается только при использовании бэкенда cryptography. |
| selfsigned_digest строка | По умолчанию: "sha256" | Алгоритм хеширования, используемый при самоподписи сертификата. Используется только поставщиком selfsigned. |
| selfsigned_not_after строка | По умолчанию: "+3650d" | Точка времени, после которой сертификат перестаёт быть действительным. Время может быть указано либо как относительное время, либо как абсолютная временная метка. Время всегда интерпретируется как UTC. Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат перестанет быть действительным через 10 лет. Используется только поставщиком selfsigned.На macOS 10.15 и новее сертификаты сервера TLS должны иметь срок действия не более 825 дней. Подробнее см. https://support.apple.com/en-us/HT210176. псевдонимы: selfsigned_notAfter |
| selfsigned_not_before строка | По умолчанию: "+0s" | Точка времени, с которой сертификат является действительным. Время может быть указано либо как относительное время, либо как абсолютная временная метка. Время всегда интерпретируется как UTC. Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат начнёт действовать с текущего момента. Используется только поставщиком selfsigned.псевдонимы: selfsigned_notBefore |
| selfsigned_version целое число | По умолчанию: 3 | Версия сертификата selfsigned.В наши дни это должно быть почти всегда 3.Используется только поставщиком selfsigned. |
Примечания
Примечание
- Все значения ASN.1 TIME должны быть указаны в формате YYYYMMDDHHMMSSZ.
- Указанная дата должна быть UTC. Минуты и секунды обязательны.
- По соображениям безопасности, при использовании поставщика
owncaне следует запускать community.crypto.x509_certificate на целевой машине, а на отдельной машине CA. Рекомендуется не хранить закрытый ключ CA на целевой машине. После подписания сертификат можно перенести на целевую машину. - Для поставщика
selfsigned, csr_path и csr_content необязательны. Если они не указаны, создаётся сертификат без какой-либо информации (Subject, Subject Alternative Names, Key Usage и т. д.).
См. также
См. также
- community.crypto.x509_certificate
-
Официальная документация по модулю community.crypto.x509_certificate.
- community.crypto.openssl_csr
-
Официальная документация по модулю community.crypto.openssl_csr.
- community.crypto.openssl_csr_pipe
-
Официальная документация по модулю community.crypto.openssl_csr_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.
Примеры
- name: Generate a Self Signed OpenSSL certificate
community.crypto.x509_certificate_pipe:
provider: selfsigned
privatekey_path: /etc/ssl/private/ansible.com.pem
csr_path: /etc/ssl/csr/ansible.com.csr
register: result
- ansible.builtin.debug:
var: result.certificate
# In the following example, both CSR and certificate file are stored on the
# machine where ansible-playbook is executed, while the OwnCA data (certificate,
# private key) are stored on the remote machine.
- name: (1/2) Generate an OpenSSL Certificate with the CSR provided inline
community.crypto.x509_certificate_pipe:
provider: ownca
content: "{{ lookup('file', '/etc/ssl/csr/www.ansible.com.crt') }}"
csr_content: "{{ lookup('file', '/etc/ssl/csr/www.ansible.com.csr') }}"
ownca_cert: /path/to/ca_cert.crt
ownca_privatekey: /path/to/ca_cert.key
ownca_privatekey_passphrase: hunter2
register: result
- name: (2/2) Store certificate
ansible.builtin.copy:
dest: /etc/ssl/csr/www.ansible.com.crt
content: "{{ result.certificate }}"
delegate_to: localhost
when: result is changed
# In the following example, the certificate from another machine is signed by
# our OwnCA whose private key and certificate are only available on this
# machine (where ansible-playbook is executed), without having to write
# the certificate file to disk on localhost. The CSR could have been
# provided by community.crypto.openssl_csr_pipe earlier, or also have been
# read from the remote machine.
- name: (1/3) Read certificate's contents from remote machine
ansible.builtin.slurp:
src: /etc/ssl/csr/www.ansible.com.crt
register: certificate_content
- name: (2/3) Generate an OpenSSL Certificate with the CSR provided inline
community.crypto.x509_certificate_pipe:
provider: ownca
content: "{{ certificate_content.content | b64decode }}"
csr_content: "{{ the_csr }}"
ownca_cert: /path/to/ca_cert.crt
ownca_privatekey: /path/to/ca_cert.key
ownca_privatekey_passphrase: hunter2
delegate_to: localhost
register: result
- name: (3/3) Store certificate
ansible.builtin.copy:
dest: /etc/ssl/csr/www.ansible.com.crt
content: "{{ result.certificate }}"
when: result is changed
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| certificate строка | changed или success | Содержимое сертификата (текущего или сгенерированного). |
Авторы
- Yanis Guenane (@Spredzy)
- Markus Teufelberger (@MarkusTeufelberger)
- 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/x509_certificate_pipe_module.html