community.crypto.x509_certificate_pipe – Генерация и/или проверка сертификатов OpenSSL
Примечание
Этот плагин входит в состав коллекции community.crypto (версия 1.4.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 (Центра сертификации) (самозаверяющий сертификат). - Этот модуль позволяет (пере)генерировать сертификаты 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 (ECS). Используется только провайдером entrust.Требуется, если провайдер entrust. | |
| entrust_api_client_cert_path путь | Путь к клиентскому сертификату, используемому для аутентификации в API сервисов сертификации Entrust (ECS). Используется только провайдером entrust.Требуется, если провайдер entrust. | |
| entrust_api_key строка | Ключ (пароль) для аутентификации в API сервисов сертификации Entrust (ECS). Используется только провайдером entrust.Требуется, если провайдер entrust. | |
| entrust_api_specification_path путь | По умолчанию: "https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml" | Путь к файлу спецификации, определяющему конфигурацию API сервисов сертификации Entrust (ECS). Можно использовать для хранения локальной копии спецификации, чтобы избежать её загрузки каждый раз при использовании модуля. Используется только провайдером entrust. |
| entrust_api_user строка | Имя пользователя для аутентификации в API сервисов сертификации Entrust (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 предоставляет его, он игнорируется.Значение never_create никогда не создает SKI. Если CSR предоставляет его, он используется.Используется только провайдером 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. |
Примечания
Примечание
- Поддерживает
check_mode. - Все значения 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
- name: Print the certificate
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 строка | изменено или успех | Содержимое (текущего или сгенерированного) сертификата. |
Авторы
- Yanis Guenane (@Spredzy)
- Markus Teufelberger (@MarkusTeufelberger)
- 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/x509_certificate_pipe_module.html