community.crypto.x509_certificate – Генерация и/или проверка сертификатов OpenSSL
Примечание
Этот плагин входит в состав коллекции community.crypto (версия 1.4.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в книге задач укажите: community.crypto.x509_certificate.
Описание
- Если доступны библиотеки cryptography и PyOpenSSL (и удовлетворяют минимальным требованиям к версии), cryptography будет предпочтительнее в качестве бэкенда по сравнению с PyOpenSSL (если бэкенд не принудительно установлен с помощью
select_crypto_backend). Обратите внимание, что бэкенд PyOpenSSL был устаревшим в Ansible 2.9 и будет удалён в версии community.crypto 2.0.0. - Он реализует понятие поставщика (например,
selfsigned,ownca,acme,assertonly,entrust) для вашего сертификата. - Он использует библиотеки pyOpenSSL или cryptography для взаимодействия с OpenSSL.
- Многие свойства, которые можно указать в этом модуле, предназначены для проверки существующего или недавно сгенерированного сертификата. Правильное место для их указания, если вы хотите получить сертификат с этими свойствами, — это CSR (запрос на подписание сертификата).
- Обратите внимание, что этот модуль назывался
openssl_certificateпри прямом включении в Ansible до версии 2.9. При перемещении в коллекциюcommunity.crypto, он был переименован в community.crypto.x509_certificate. С Ansible 2.10 он по-прежнему может использоваться с предыдущим коротким именем (или с помощьюansible.builtin.openssl_certificate), которое перенаправляет наcommunity.crypto.x509_certificate. При использовании полных имён классов или ключевого слова collections следует использовать новое имя community.crypto.x509_certificate, чтобы избежать предупреждений об устаревании. - Обратите внимание, что модуль перегенерирует существующий сертификат, если он не соответствует параметрам модуля или если он, по-видимому, повреждён. Если вы обеспокоены тем, что это может перезаписать ваш существующий сертификат, рассмотрите использование параметра backup.
- Поставщик
assertonlyпредназначен для случаев, когда вас интересуют только свойства предоставленного сертификата. Обратите внимание, что этот поставщик устарел в Ansible 2.9 и будет удалён в community.crypto 2.0.0. См. примеры того, как эмулировать использованиеassertonlyс помощью community.crypto.x509_certificate_info, community.crypto.openssl_csr_info, community.crypto.openssl_privatekey_info и ansible.builtin.assert. Это также позволяет выполнять более гибкую проверку, чем та, которая предлагается поставщикомassertonly. - Поставщик
owncaпредназначен для генерации сертификата OpenSSL, подписанного с помощью собственного сертификата CA (Certificate Authority) (самозаверяющегося сертификата). - Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.
Требования
Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.
- PyOpenSSL >= 0.15 или cryptography >= 1.6 (если используется
selfsigned,owncaилиassertonlyпоставщик) - acme-tiny >= 4.0.0 (если используется поставщик
acme)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| acme_accountkey_path путь | Путь к ключу учетной записи (accountkey) для поставщика acme. Используется только поставщиком acme. | |
| acme_chain логическое значение |
| Включить промежуточный сертификат в сгенерированный сертификат. Используется только поставщиком acme. Обратите внимание, что это доступно только для старых версий acme-tiny. Новые версии автоматически включают цепочку, и установка acme_chain в значение yes приводит к ошибке. |
| acme_challenge_path путь | Путь к каталогу вызовов ACME, который обслуживается по адресу http://<HOST>:80/.well-known/acme-challenge/ Используется только поставщиком acme. | |
| acme_directory строка добавлен в 1.0.0 community.crypto | Значение по умолчанию: "https://acme-v02.api.letsencrypt.org/directory" | Используемый каталог ACME. Можно использовать любой каталог, поддерживающий протокол ACME, например, Buypass или Let's Encrypt. Let's Encrypt рекомендует использовать их тестовый сервер при разработке задач. https://letsencrypt.org/docs/staging-environment/. |
| attributes строка добавлен в 2.3 ansible.builtin | Атрибуты, которые должны иметь результирующий файл или каталог. Список поддерживаемых флагов можно найти в мануале к команде chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении командой lsattr. Оператор = используется по умолчанию, в противном случае необходимо включить операторы + или - в строку.псевдонимы: attr | |
| backup логическое значение |
| Создать резервную копию файла, включая отметку времени, чтобы можно было восстановить исходный сертификат в случае случайной перезаписи новым. Не используется поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly. |
| csr_content строка добавлен в 1.0.0 community.crypto | Содержимое запроса на подпись сертификата (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. | |
| extended_key_usage список / элементы=строка | Поле расширенного использования ключа (extended_key_usage) должно содержать все эти значения. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.псевдонимы: extendedKeyUsage | |
| extended_key_usage_strict логическое значение |
| Если установлено в yes, поле расширенного использования ключа (extended_key_usage) должно содержать только эти значения.Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.псевдонимы: extendedKeyUsage_strict |
| force логическое значение |
| Сгенерировать сертификат, даже если он уже существует. |
| group строка | Имя группы, которая должна владеть файлом/каталогом, как если бы это передавалось в команду chown. | |
| has_expired логическое значение |
| Проверяет, истек ли сертификат/действителен ли он на момент выполнения модуля. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly. |
| invalid_at строка | Сертификат должен быть недействительным в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly. | |
| issuer словарь | Пары ключ-значение, которые должны присутствовать в поле имени издателя сертификата. Если вам нужно указать более одного значения с одинаковым ключом, используйте список в качестве значения. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly. |
| issuer_strict boolean |
| Если установлено в yes, поле issuer должно содержать только эти значения.Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. |
| key_usage list / elements=string | Расширенное поле key_usage должно содержать все эти значения. Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. Псевдонимы: keyUsage | |
| key_usage_strict boolean |
| Если установлено в yes, расширенное поле key_usage должно содержать только эти значения.Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. Псевдонимы: keyUsage_strict |
| mode raw | Права доступа, которые должен иметь полученный файл или директория. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы парсер YAML Ansible знал, что это восьмеричное число (как 0644 или 01777) или заключить его в кавычки (как '644' или '1777'), чтобы Ansible получил строку и смог выполнить преобразование из строки в число.Предоставление Ansible числа без выполнения одного из этих правил приведет к десятичному числу, что даст непредсказуемые результаты. Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).Если mode не указан, и целевой файл не существует, по умолчанию umask на системе будет использоваться при установке режима для вновь созданного файла.Если mode не указан, и целевой файл существует, будет использован режим существующего файла.Указание mode является лучшим способом гарантировать, что файлы создаются с правильными правами. См. CVE-2020-1736 для получения дополнительной информации. | |
| not_after string | Сертификат должен истечь в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. Псевдонимы: notAfter | |
| not_before string | Сертификат должен начать действовать в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. Псевдонимы: notBefore | |
| ownca_content string добавлен в 1.0.0 community.crypto | Содержание сертификата CA (Центр сертификации). Это используется только поставщиком ownca. Это взаимно исключает ownca_path. | |
| ownca_create_authority_key_identifier boolean |
| Создать идентификатор ключа CA из сертификата CA. Если в CSR был предоставлен идентификатор ключа CA, он игнорируется. Идентификатор ключа CA генерируется из идентификатора ключа субъекта сертификата CA, если он доступен. Если он недоступен, будет использован открытый ключ сертификата CA. Это используется только поставщиком ownca. Обратите внимание, что это поддерживается только при использовании бэкенда cryptography. |
| ownca_create_subject_key_identifier string |
| Нужно ли создавать идентификатор ключа субъекта (SKI) из открытого ключа. Значение create_if_not_provided (по умолчанию) создает SKI только тогда, когда CSR его не предоставляет.Значение always_create всегда создает SKI. Если CSR предоставляет его, он игнорируется.Значение never_create никогда не создает SKI. Если CSR предоставляет его, он используется.Это используется только поставщиком ownca. Обратите внимание, что это поддерживается только при использовании бэкенда cryptography. |
| ownca_digest string | Значение по умолчанию: "sha256" | Алгоритм дайджеста, который будет использован для сертификата ownca. Это используется только поставщиком ownca. |
| ownca_not_after string | Значение по умолчанию: "+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 string | Значение по умолчанию: "+0s" | Точка времени, с которой сертификат действителен. Время может быть указано либо как относительное время, либо как абсолютная отметка времени. Время всегда интерпретируется как UTC. Допустимый формат - [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат начнет действовать с текущего момента. Это используется только поставщиком ownca. |
| ownca_path path | Полный удаленный путь к сертификату CA (Центр сертификации). Это используется только поставщиком ownca. Это взаимно исключает ownca_content. | |
| ownca_privatekey_content string добавлен в 1.0.0 community.crypto | Содержание закрытого ключа CA (Центр сертификации), используемого при подписании сертификата. Это используется только поставщиком ownca. Это взаимно исключает ownca_privatekey_path. | |
| ownca_privatekey_passphrase string | Пароль для ownca_privatekey_path или ownca_privatekey_content. Это используется только поставщиком ownca. | |
| ownca_privatekey_path path | Путь к закрытому ключу CA (Центр сертификации), используемому при подписании сертификата. Это используется только поставщиком ownca. Это взаимно исключает ownca_privatekey_content. | |
| ownca_version integer | Значение по умолчанию: 3 | Версия сертификата ownca. В наши дни это должно быть почти всегда 3. Это используется только поставщиком ownca. |
| owner string | Имя пользователя, который должен владеть файлом/директорией, как если бы оно было передано в chown. | |
| path path / required | Полный удаленный путь, где должен быть создан или находится сгенерированный сертификат. | |
| privatekey_content string добавлен в 1.0.0 community.crypto | Путь к закрытому ключу, используемому для подписания сертификата. Это взаимно исключает privatekey_path. | |
| privatekey_passphrase string | Пароль для privatekey_path или privatekey_content. Требуется, если закрытый ключ защищен паролем. | |
| privatekey_path path | Путь к закрытому ключу, используемому для подписания сертификата. Это взаимно исключает privatekey_content. |
| provider string |
| Имя поставщика для использования при генерации/получении сертификата OpenSSL. Поставщик assertonly не будет генерировать файлы и завершится с ошибкой, если файл сертификата отсутствует.Поставщик assertonly устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. Пожалуйста, обратитесь к примерам о том, как его эмулировать с помощью community.crypto.x509_certificate_info, community.crypto.openssl_csr_info, community.crypto.openssl_privatekey_info и ansible.builtin.assert.Поставщик entrust был добавлен для Ansible 2.9 и требует учетных данных для API Entrust Certificate Services (ECS).Требуется, если state равен present. |
| return_content boolean добавлен в 1.0.0 community.crypto |
| Если установлено yes, вернет содержимое (текущего или сгенерированного) сертификата в качестве certificate. |
| select_crypto_backend string |
| Определяет, какой криптографический бэкенд использовать. По умолчанию выбрано auto, которое пытается использовать cryptography, если доступно, и переходит к pyopenssl.Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.Если установлено cryptography, попытается использовать библиотеку cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. Начиная с этого момента, будет доступен только бэкенд cryptography. |
| selevel string | Часть контекста файла SELinux, относящаяся к уровню. Это атрибут MLS/MCS, иногда известный как range. Если установлено _default, будет использоваться часть политики level, если она доступна. | |
| selfsigned_create_subject_key_identifier string |
| Определяет, следует ли создавать Subject Key Identifier (SKI) из открытого ключа. Значение create_if_not_provided (по умолчанию) создаёт SKI только тогда, когда CSR его не предоставляет.Значение always_create всегда создаёт SKI. Если CSR предоставляет SKI, он игнорируется.Значение never_create никогда не создаёт SKI. Если CSR предоставляет SKI, он используется.Используется только поставщиком selfsigned. Обратите внимание, что это поддерживается только если используется бэкенд cryptography. |
| selfsigned_digest string | По умолчанию: "sha256" | Алгоритм хеширования, используемый при самоподписи сертификата. Используется только поставщиком selfsigned. |
| selfsigned_not_after string | По умолчанию: "+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 string | По умолчанию: "+0s" | Точка времени, с которой сертификат считается действительным. Время можно указать как относительное время, так и как абсолютную метку времени. Время всегда интерпретируется как UTC. Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени данный модуль НЕ идемпотентен. Если это значение не указано, сертификат начнёт действовать с текущего момента. Используется только поставщиком selfsigned. псевдонимы: selfsigned_notBefore |
| selfsigned_version integer | По умолчанию: 3 | Версия сертификата selfsigned. В настоящее время почти всегда следует использовать 3. Используется только поставщиком selfsigned. |
| serole string | Часть контекста файла SELinux, относящаяся к роли. Если установлено _default, будет использоваться часть политики role, если она доступна. | |
| setype string | Часть контекста файла SELinux, относящаяся к типу. Если установлено _default, будет использоваться часть политики type, если она доступна. | |
| seuser string | Часть контекста файла SELinux, относящаяся к пользователю. По умолчанию используется политика system, где это применимо.Если установлено _default, будет использоваться часть политики user, если она доступна. | |
| signature_algorithms list / elements=string | Список алгоритмов, которые вы хотите принять для подписи сертификата (например, ['sha256WithRSAEncryption', 'sha512WithRSAEncryption']). Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. | |
| state string |
| Определяет, должен ли сертификат существовать или нет, выполняя действия, если состояние отличается от указанного. |
| subject dictionary | Ключевые/значения, которые должны присутствовать в поле имени субъекта сертификата. Если вам нужно указать более одного значения с одним ключом, используйте список в качестве значения. Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. | |
| subject_alt_name list / elements=string | Поле расширения subject_alt_name должно содержать эти значения. Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. псевдонимы: subjectAltName | |
| subject_alt_name_strict boolean |
| Если установлено yes, поле расширения subject_alt_name должно содержать только эти значения.Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. псевдонимы: subjectAltName_strict |
| subject_strict boolean |
| Если установлено yes, поле subject должно содержать только эти значения.Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. |
| unsafe_writes boolean добавлен в 2.2 ansible.builtin |
| Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Один пример — файлы, монтированные с помощью docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачно (хотя он не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены проблемам гонки и могут привести к повреждению данных. |
| valid_at string | Сертификат должен быть действительным в данный момент времени. Метка времени отформатирована как ASN.1 TIME. Используется только поставщиком assertonly. Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly. |
| valid_in string | Сертификат должен быть действительным в указанный момент времени относительно текущего момента. Допустимый формат — [+-]timespec | number_of_seconds, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании этого параметра модуль НЕ является идемпотентным. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернативных вариантов см. пример замены assertonly. | |
| version integer | Версия сертификата. В настоящее время она почти всегда должна быть 3. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернативных вариантов см. пример замены assertonly. |
Примечания
Примечание
- Поддерживает
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_pipe
-
Официальная документация по модулю community.crypto.x509_certificate_pipe.
- 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:
path: /etc/ssl/crt/ansible.com.crt
privatekey_path: /etc/ssl/private/ansible.com.pem
csr_path: /etc/ssl/csr/ansible.com.csr
provider: selfsigned
- name: Generate an OpenSSL certificate signed with your own CA certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
ownca_path: /etc/ssl/crt/ansible_CA.crt
ownca_privatekey_path: /etc/ssl/private/ansible_CA.pem
provider: ownca
- name: Generate a Let's Encrypt Certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey_path: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
- name: Force (re-)generate a new Let's Encrypt Certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey_path: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
force: yes
- name: Generate an Entrust certificate via the Entrust Certificate Services (ECS) API
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: entrust
entrust_requester_name: Jo Doe
entrust_requester_email: jdoe@ansible.com
entrust_requester_phone: 555-555-5555
entrust_cert_type: STANDARD_SSL
entrust_api_user: apiusername
entrust_api_key: a^lv*32!cd9LnT
entrust_api_client_cert_path: /etc/ssl/entrust/ecs-client.crt
entrust_api_client_cert_key_path: /etc/ssl/entrust/ecs-key.crt
entrust_api_specification_path: /etc/ssl/entrust/api-docs/cms-api-2.1.0.yaml
# The following example shows one assertonly usage using all existing options for
# assertonly, and shows how to emulate the behavior with the x509_certificate_info,
# openssl_csr_info, openssl_privatekey_info and assert modules:
- name: Usage of assertonly with all existing options
community.crypto.x509_certificate:
provider: assertonly
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
privatekey_path: /etc/ssl/csr/ansible.com.key
signature_algorithms:
- sha256WithRSAEncryption
- sha512WithRSAEncryption
subject:
commonName: ansible.com
subject_strict: yes
issuer:
commonName: ansible.com
issuer_strict: yes
has_expired: no
version: 3
key_usage:
- Data Encipherment
key_usage_strict: yes
extended_key_usage:
- DVCS
extended_key_usage_strict: yes
subject_alt_name:
- dns:ansible.com
subject_alt_name_strict: yes
not_before: 20190331202428Z
not_after: 20190413202428Z
valid_at: "+1d10h"
invalid_at: 20200331202428Z
valid_in: 10 # in ten seconds
- name: Get certificate information
community.crypto.x509_certificate_info:
path: /etc/ssl/crt/ansible.com.crt
# for valid_at, invalid_at and valid_in
valid_at:
one_day_ten_hours: "+1d10h"
fixed_timestamp: 20200331202428Z
ten_seconds: "+10"
register: result
- name: Get CSR information
community.crypto.openssl_csr_info:
# Verifies that the CSR signature is valid; module will fail if not
path: /etc/ssl/csr/ansible.com.csr
register: result_csr
- name: Get private key information
community.crypto.openssl_privatekey_info:
path: /etc/ssl/csr/ansible.com.key
register: result_privatekey
- assert:
that:
# When private key is specified for assertonly, this will be checked:
- result.public_key == result_privatekey.public_key
# When CSR is specified for assertonly, this will be checked:
- result.public_key == result_csr.public_key
- result.subject_ordered == result_csr.subject_ordered
- result.extensions_by_oid == result_csr.extensions_by_oid
# signature_algorithms check
- "result.signature_algorithm == 'sha256WithRSAEncryption' or result.signature_algorithm == 'sha512WithRSAEncryption'"
# subject and subject_strict
- "result.subject.commonName == 'ansible.com'"
- "result.subject | length == 1" # the number must be the number of entries you check for
# issuer and issuer_strict
- "result.issuer.commonName == 'ansible.com'"
- "result.issuer | length == 1" # the number must be the number of entries you check for
# has_expired
- not result.expired
# version
- result.version == 3
# key_usage and key_usage_strict
- "'Data Encipherment' in result.key_usage"
- "result.key_usage | length == 1" # the number must be the number of entries you check for
# extended_key_usage and extended_key_usage_strict
- "'DVCS' in result.extended_key_usage"
- "result.extended_key_usage | length == 1" # the number must be the number of entries you check for
# subject_alt_name and subject_alt_name_strict
- "'dns:ansible.com' in result.subject_alt_name"
- "result.subject_alt_name | length == 1" # the number must be the number of entries you check for
# not_before and not_after
- "result.not_before == '20190331202428Z'"
- "result.not_after == '20190413202428Z'"
# valid_at, invalid_at and valid_in
- "result.valid_at.one_day_ten_hours" # for valid_at
- "not result.valid_at.fixed_timestamp" # for invalid_at
- "result.valid_at.ten_seconds" # for valid_in
# Examples for some checks one could use the assertonly provider for:
# (Please note that assertonly has been deprecated!)
# How to use the assertonly provider to implement and trigger your own custom certificate generation workflow:
- name: Check if a certificate is currently still valid, ignoring failures
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
has_expired: no
ignore_errors: yes
register: validity_check
- name: Run custom task(s) to get a new, valid certificate in case the initial check failed
command: superspecialSSL recreate /etc/ssl/crt/example.com.crt
when: validity_check.failed
- name: Check the new certificate again for validity with the same parameters, this time failing the play if it is still invalid
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
has_expired: no
when: validity_check.failed
# Some other checks that assertonly could be used for:
- name: Verify that an existing certificate was issued by the Let's Encrypt CA and is currently still valid
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
issuer:
O: Let's Encrypt
has_expired: no
- name: Ensure that a certificate uses a modern signature algorithm (no SHA1, MD5 or DSA)
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
signature_algorithms:
- sha224WithRSAEncryption
- sha256WithRSAEncryption
- sha384WithRSAEncryption
- sha512WithRSAEncryption
- sha224WithECDSAEncryption
- sha256WithECDSAEncryption
- sha384WithECDSAEncryption
- sha512WithECDSAEncryption
- name: Ensure that the existing certificate belongs to the specified private key
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
privatekey_path: /etc/ssl/private/example.com.pem
provider: assertonly
- name: Ensure that the existing certificate is still valid at the winter solstice 2017
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
valid_at: 20171221162800Z
- name: Ensure that the existing certificate is still valid 2 weeks (1209600 seconds) from now
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
valid_in: 1209600
- name: Ensure that the existing certificate is only used for digital signatures and encrypting other keys
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
key_usage:
- digitalSignature
- keyEncipherment
key_usage_strict: true
- name: Ensure that the existing certificate can be used for client authentication
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
extended_key_usage:
- clientAuth
- name: Ensure that the existing certificate can only be used for client authentication and time stamping
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
extended_key_usage:
- clientAuth
- 1.3.6.1.5.5.7.3.8
extended_key_usage_strict: true
- name: Ensure that the existing certificate has a certain domain in its subjectAltName
community.crypto.x509_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
subject_alt_name:
- www.example.com
- test.example.com
Возвращаемые значения
Общие возвращаемые значения описаны здесь, а следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| backup_file string | изменён, если backup — yes
| Имя созданного файла резервной копии. Пример: /path/to/www.ansible.com.crt.2019-03-09@11:22~ |
| certificate string добавлен в 1.0.0 community.crypto | если state — present и return_content — yes
| Содержимое (текущего или сгенерированного) сертификата. |
| filename string | изменён или успешно | Путь к сгенерированному сертификату. Пример: /etc/ssl/crt/www.ansible.com.crt |
Авторы
- Yanis Guenane (@Spredzy)
- Markus Teufelberger (@MarkusTeufelberger)
© 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_module.html