community.crypto.x509_certificate – Генерация и/или проверка сертификатов OpenSSL
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в playbook, укажите: 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. При использовании FQCN или ключевого слова 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 (Удостоверяющего центра) (самоподписанный сертификат). - Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.
Требования
Ниже перечислены требования к хосту, на котором выполняется данный модуль.
- PyOpenSSL >= 0.15 или cryptography >= 1.6 (если используется
selfsigned,owncaилиassertonlyпоставщик) - acme-tiny >= 4.0.0 (если используется поставщик
acme)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| acme_accountkey_path путь | Путь к ключу учетной записи 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 список / элементы=строка | Расширение 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, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы Ansible's YAML-парсер знал, что это восьмеричное число (как 0644 или 01777) или заключить его в кавычки (как '644' или '1777'), чтобы Ansible получил строку и смог самостоятельно выполнить преобразование из строки в число.Передача Ansible числа без соблюдения одного из этих правил приведёт к десятичному числу, что приведёт к неожиданным результатам. Начиная с Ansible 1.8, режим может быть указан как символьный режим (например, u+rwx или u=rw,g=r,o=r). | |
| not_after строка | Сертификат должен истечь в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.Псевдонимы: notAfter | |
| not_before строка | Сертификат должен начать действовать в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Это используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.Псевдонимы: notBefore | |
| ownca_content строка добавлено в 1.0.0 community.crypto | Содержимое сертификата CA (Удостоверяющего центра). Это используется только поставщиком ownca. Взаимоисключающее с ownca_path. | |
| ownca_create_authority_key_identifier boolean |
| Создать идентификатор ключа авторитета из сертификата 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 строка добавлено в 1.0.0 community.crypto | Содержимое закрытого ключа 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. |
| owner строка | Имя пользователя, который должен владеть файлом/директорией, как это передаётся в chown. | |
| path путь / обязательно | Полный путь на удалённом сервере, где должен быть создан или уже расположен файл сертификата. | |
| privatekey_content строка добавлено в 1.0.0 community.crypto | Путь к закрытому ключу для использования при подписи сертификата. Взаимоисключающее с privatekey_path. | |
| privatekey_passphrase строка | Пароль для privatekey_path соответственно privatekey_content. Требуется, если закрытый ключ защищен паролем. | |
| privatekey_path путь | Путь к закрытому ключу для использования при подписи сертификата. Взаимоисключающее с privatekey_content. | |
| provider строка |
| Имя поставщика для генерации/получения сертификата 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 (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. |
| версия целое число | Версия сертификата. В настоящее время она почти всегда должна быть 3. Используется только поставщиком assertonly. Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly. |
Примечания
Примечание
- Все значения 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:
- 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
- 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
- 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
- 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 строка | изменённое и если backup равен yes
| Имя созданного файла резервной копии. Пример: /path/to/www.ansible.com.crt.2019-03-09@11:22~ |
| certificate строка добавлен в 1.0.0 community.crypto | если state равен present и return_content равен yes
| Содержимое (текущего или сгенерированного) сертификата. |
| filename строка | изменённое или успешное | Путь к сгенерированному сертификату. Пример: /etc/ssl/crt/www.ansible.com.crt |
Авторы
- Yanis Guenane (@Spredzy)
- Markus Teufelberger (@MarkusTeufelberger)
© 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_module.html