openssl_certificate – Генерация и/или проверка сертификатов OpenSSL
Новое в версии 2.4.
Описание
- Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.
- Он реализует понятие провайдера (т.е.
selfsigned,ownca,acme,assertonly,entrust) для вашего сертификата. - Провайдер
assertonlyпредназначен для случаев, когда вас интересуют только свойства предоставленного сертификата. Обратите внимание, что этот провайдер устарел в Ansible 2.9 и будет удален в Ansible 2.13. См. примеры того, как эмулировать использованиеassertonlyс openssl_certificate_info, openssl_csr_info, openssl_privatekey_info и assert. Это также позволяет проводить более гибкую проверку, чем та, что предлагается провайдеромassertonly. - Провайдер
owncaпредназначен для генерации сертификатов OpenSSL, подписанных сертификатом вашей собственной ЦС (Центр сертификации) (самоподписанный сертификат). - Многие свойства, которые могут быть указаны в этом модуле, предназначены для проверки существующего или вновь сгенерированного сертификата. Правильное место для их указания, если вы хотите получить сертификат с этими свойствами, — это CSR (запрос на подписание сертификата).
- Обратите внимание, что модуль перегенерирует существующий сертификат, если он не соответствует параметрам модуля или кажется повреждённым. Если вас беспокоит возможность перезаписи существующего сертификата, рассмотрите использование параметра backup.
- Он использует библиотеки pyOpenSSL или cryptography для взаимодействия с OpenSSL.
- Если доступны как библиотеки cryptography, так и PyOpenSSL (и соответствуют минимальным требованиям по версии) cryptography будет предпочтительнее, чем PyOpenSSL, в качестве бэкенда (если бэкенд не принудительно задан параметром
select_crypto_backend). Обратите внимание, что бэкенд PyOpenSSL устарел в Ansible 2.9 и будет удалён в Ansible 2.13.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- PyOpenSSL >= 0.15 или cryptography >= 1.6 (если используется провайдер
selfsignedилиassertonly) - acme-tiny (если используется провайдер
acme)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| acme_accountkey_path путь | Путь к файлу accountkey для поставщика acme.Используется только поставщиком acme. | |
| acme_chain логическое добавлено в 2.5 |
| Включить промежуточный сертификат в генерируемый сертификат Используется только поставщиком acme.Обратите внимание, что это доступно только для более старых версий acme-tiny. Новые версии включают цепочку автоматически, и установка acme_chain в значение yes приведет к ошибке. |
| acme_challenge_path путь | Путь к каталогу вызовов ACME, доступному по адресу http://<HOST>:80/.well-known/acme-challenge/
Используется только поставщиком acme. | |
| attributes строка | Атрибуты, которые должен иметь полученный файл или каталог. Для просмотра поддерживаемых флагов обратитесь к справке man для команды chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе команды lsattr. Оператор = предполагается по умолчанию, в противном случае операторы + или - необходимо включить в строку.алиасы: attr | |
| backup логическое добавлено в 2.8 |
| Создать резервный файл, включая отметку времени, чтобы можно было восстановить исходный сертификат, если вы случайно перезаписали его новым. Не используется поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив, см. пример по замене assertonly. |
| csr_path путь | Путь к запросу на подписание сертификата (CSR), используемому для генерации этого сертификата. Не требуется в режиме assertonly. | |
| entrust_api_client_cert_key_path путь добавлено в 2.9 | Путь к закрытому ключу клиентского сертификата, используемого для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_client_cert_path путь добавлено в 2.9 | Путь к клиентскому сертификату, используемому для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_key строка добавлено в 2.9 | Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_api_specification_path путь добавлено в 2.9 | По умолчанию: "https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml" | Путь к файлу спецификации, определяющему конфигурацию API Entrust Certificate Services (ECS). Вы можете использовать его для хранения локальной копии спецификации, чтобы избежать её загрузки каждый раз при использовании модуля. Используется только поставщиком entrust. |
| entrust_api_user строка добавлено в 2.9 | Имя пользователя для аутентификации в API Entrust Certificate Services (ECS). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_cert_type строка добавлено в 2.9 |
| Укажите тип запрашиваемого сертификата. Используется только поставщиком entrust. |
| entrust_not_after строка добавлено в 2.9 | По умолчанию: "+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 строка добавлено в 2.9 | Электронная почта запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_requester_name строка добавлено в 2.9 | Имя запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| entrust_requester_phone строка добавлено в 2.9 | Номер телефона запрашивающего сертификат (для отслеживания). Используется только поставщиком entrust.Требуется, если поставщик entrust. | |
| extended_key_usage список / элементы=строка | Поле расширения extended_key_usage должно содержать все эти значения. Используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив, см. пример по замене assertonly.алиасы: extendedKeyUsage | |
| extended_key_usage_strict логическое |
| Если установлено в значение yes, поле расширения extended_key_usage должно содержать только эти значения.Используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив, см. пример по замене assertonly.алиасы: extendedKeyUsage_strict |
| force логическое |
| Сгенерировать сертификат, даже если он уже существует. |
| group строка | Имя группы, которая должна владеть файлом/каталогом, как в команде chown. |
| has_expired boolean |
| Проверяет, истек ли сертификат/не истек ли он в момент выполнения модуля. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. |
| invalid_at string | Сертификат должен быть недействительным в данный момент времени. Отметка времени отформатирована как ASN.1 TIME. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. | |
| issuer dictionary | Ключевые пары, которые должны присутствовать в поле имени издателя сертификата. Если вам нужно указать более одного значения с одинаковым ключом, используйте список в качестве значения. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. | |
| issuer_strict boolean добавлено в 2.5 |
| Если установлено значение yes, поле issuer должно содержать только эти значения.Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. |
| key_usage list / elements=string | Поле расширения key_usage должно содержать все эти значения. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly.псевдонимы: keyUsage | |
| key_usage_strict boolean |
| Если установлено значение yes, поле расширения key_usage должно содержать только эти значения.Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly.псевдонимы: keyUsage_strict |
| mode string | Права доступа, которые должен иметь результирующий файл или директория. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую цифру 0, чтобы парсер YAML Ansible понял, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и выполнил собственное преобразование из строки в число.Передача Ansible числа без соблюдения этих правил приведёт к десятичному числу, что вызовет непредвиденные результаты. Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r). | |
| not_after string | Сертификат должен истечь в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly.псевдонимы: notAfter | |
| not_before string | Сертификат должен начать действовать в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Используется только поставщиком assertonly.Этот параметр устарел начиная с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly.псевдонимы: notBefore | |
| ownca_create_authority_key_identifier boolean добавлено в 2.9 |
| Создать идентификатор ключа уполномочивающей организации из сертификата ЦС. Если CSR предоставляет идентификатор ключа уполномочивающей организации, он игнорируется. Идентификатор ключа уполномочивающей организации генерируется из идентификатора ключа субъекта сертификата ЦС, если он доступен. Если он недоступен, будет использован открытый ключ сертификата ЦС. Используется только поставщиком ownca.Обратите внимание, что это поддерживается только при использовании бэкенда cryptography! |
| ownca_create_subject_key_identifier string добавлено в 2.9 |
| Создавать ли идентификатор ключа субъекта (SKI) из открытого ключа. Значение create_if_not_provided (по умолчанию) создаёт SKI только тогда, когда CSR не предоставляет его.Значение always_create всегда создаёт SKI. Если CSR предоставляет SKI, он игнорируется.Значение never_create никогда не создаёт SKI. Если CSR предоставляет SKI, он используется.Используется только поставщиком ownca.Обратите внимание, что это поддерживается только при использовании бэкенда cryptography! |
| ownca_digest string добавлено в 2.7 | Значение по умолчанию: "sha256" | Алгоритм дайджеста, используемый для сертификата ownca.Используется только поставщиком ownca. |
| ownca_not_after string добавлено в 2.7 | Значение по умолчанию: "+3650d" | Момент времени, когда сертификат перестаёт быть действительным. Время может быть указано как относительное время, так и как абсолютная отметка времени. Время всегда интерпретируется как UTC. Допустимый формат — [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат перестанет быть действительным через 10 лет. Используется только поставщиком ownca. |
| ownca_not_before string добавлено в 2.7 | Значение по умолчанию: "+0s" | Момент времени, начиная с которого сертификат действителен. Время может быть указано как относительное время, так и как абсолютная отметка времени. Время всегда интерпретируется как UTC. Допустимый формат — [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат начнёт действовать с текущего момента времени. Используется только поставщиком ownca. |
| ownca_path path добавлено в 2.7 | Удаленный абсолютный путь к сертификату ЦС (Центральный сертификационный орган). Используется только поставщиком ownca. | |
| ownca_privatekey_passphrase string добавлено в 2.7 | Пароль к ownca_privatekey_path. Используется только поставщиком ownca. | |
| ownca_privatekey_path path добавлено в 2.7 | Путь к закрытому ключу ЦС (Центрального сертификационного органа), используемому при подписи сертификата. Используется только поставщиком ownca. |
| ownca_version целое число добавлен в 2.7 | Значение по умолчанию: 3 | Версия сертификата ownca.В наши дни оно почти всегда должно быть 3.Это используется только поставщиком ownca. |
| owner строка | Имя пользователя, который должен владеть файлом/каталогом, как это передается в команду chown. | |
| path путь / обязательно | Абсолютный удаленный путь, где должен быть создан или уже находится сгенерированный сертификат. | |
| privatekey_passphrase строка | Пароль к privatekey_path. Это требуется, если закрытый ключ защищен паролем. | |
| privatekey_path путь | Путь к закрытому ключу, который будет использован при подписи сертификата. | |
| provider строка |
| Имя поставщика, который будет использован для генерации/получения сертификата OpenSSL. Поставщик assertonly не будет генерировать файлы и вызовет ошибку, если файл сертификата отсутствует.Поставщик assertonly был устаревшим в Ansible 2.9 и будет удален в Ansible 2.13. См. примеры по эмуляции с помощью openssl_certificate_info, openssl_csr_info, openssl_privatekey_info и assert.Поставщик entrust был добавлен для Ansible 2.9 и требует учетных данных для API https://www.entrustdatacard.com/products/categories/ssl-certificates (ECS).Требуется, если state имеет значение present. |
| select_crypto_backend строка добавлен в 2.8 |
| Определяет, какой криптографический бэкенд использовать. По умолчанию выбирается auto, который пытается использовать cryptography, если оно доступно, и в противном случае переходит к pyopenssl.Если установлено значение pyopenssl, будет использоваться библиотека pyOpenSSL.Если установлено значение cryptography, будет использоваться библиотека cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в Ansible 2.13. С этого момента доступен только бэкенд cryptography. |
| selevel строка | Значение по умолчанию: "s0" | Часть контекста файла SELinux, определяющая уровень. Это атрибут MLS/MCS, иногда называемый range.Если установлено значение _default, будет использоваться часть политики level, если она доступна. |
| selfsigned_create_subject_key_identifier строка добавлен в 2.9 |
| Создавать ли идентификатор ключа субъекта (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.алиасы: selfsigned_notAfter |
| selfsigned_not_before строка | Значение по умолчанию: "+0s" | Момент времени, с которого сертификат является действительным. Время может быть указано как относительное время или как абсолютная временная метка. Время всегда интерпретируется как UTC. Допустимый формат — [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен. Если это значение не указано, сертификат будет действительным с текущего момента. Это используется только поставщиком selfsigned.алиасы: selfsigned_notBefore |
| selfsigned_version целое число добавлен в 2.5 | Значение по умолчанию: 3 | Версия сертификата selfsigned.В наши дни оно почти всегда должно быть 3.Это используется только поставщиком selfsigned. |
| serole строка | Часть контекста файла SELinux, определяющая роль. Если установлено значение _default, будет использоваться часть политики role, если она доступна. | |
| setype строка | Часть контекста файла SELinux, определяющая тип. Если установлено значение _default, будет использоваться часть политики type, если она доступна. | |
| seuser строка | Часть контекста файла SELinux, определяющая пользователя. По умолчанию используется политика system, если применимо.Если установлено значение _default, будет использоваться часть политики user, если она доступна. | |
| signature_algorithms список / элементы=строка | Список алгоритмов, с которыми вы принимаете подпись сертификата (например, ['sha256WithRSAEncryption', 'sha512WithRSAEncryption']). Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Альтернативные варианты см. в примере замены assertonly. | |
| state строка |
| Указывает, должен ли существовать сертификат или нет, выполняя действия, если состояние отличается от указанного. |
| subject словарь | Ключевые пары, которые должны присутствовать в поле имени субъекта сертификата. Если необходимо указать более одного значения с тем же ключом, используйте список как значение. Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Альтернативные варианты см. в примере замены assertonly. | |
| subject_alt_name список / элементы=строка | Поле расширения subject_alt_name должно содержать эти значения. Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Альтернативные варианты см. в примере замены assertonly.алиасы: subjectAltName |
| subject_alt_name_strict boolean |
| Если установлено значение yes, поле расширения subject_alt_name должно содержать только эти значения.Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly.псевдонимы: subjectAltName_strict |
| subject_strict boolean добавлено в 2.5 |
| Если установлено значение yes, поле subject должно содержать только эти значения.Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. |
| unsafe_writes boolean |
| Влияние на использование атомарных операций для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Одним примером являются файлы, смонтированные через docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible использовать небезопасные методы обновления файлов, когда атомарные операции завершаются неудачно (однако, он не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены конкурентным состояниям и могут привести к повреждению данных. |
| valid_at строка | Сертификат должен быть действительным в этот момент времени. Отметка времени отформатирована как ASN.1 TIME. Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. | |
| valid_in строка | Сертификат должен оставаться действительным в течение этого относительного временного смещения от текущего момента. Допустимый формат — [+-]timespec | number_of_seconds, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).Обратите внимание, что при использовании этого параметра этот модуль НЕ идемпотентен. Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. | |
| version целое число | Версия сертификата. В настоящее время она почти всегда должна быть 3. Это используется только поставщиком assertonly.Этот параметр устарел с Ansible 2.9 и будет удален вместе с поставщиком assertonly в Ansible 2.13. Для альтернатив см. пример замены assertonly. |
Примечания
Примечание
- Все значения ASN.1 TIME должны быть указаны в формате YYYYMMDDHHMMSSZ.
- Указанная дата должна быть UTC. Минуты и секунды обязательны.
- По соображениям безопасности при использовании поставщика
owncaне следует запускать модуль openssl_certificate на целевом компьютере, а на отдельном сервере CA. Рекомендуется не хранить закрытый ключ CA на целевом компьютере. После подписи сертификат можно переместить на целевой компьютер.
См. также
См. также
- openssl_csr – Генерация запроса на подпись сертификата OpenSSL (CSR)
- Официальная документация по модулю openssl_csr.
- openssl_dhparam – Генерация параметров Diffie-Hellman OpenSSL
- Официальная документация по модулю openssl_dhparam.
- openssl_pkcs12 – Генерация архива PKCS#12 OpenSSL
- Официальная документация по модулю openssl_pkcs12.
- openssl_privatekey – Генерация закрытых ключей OpenSSL
- Официальная документация по модулю openssl_privatekey.
- openssl_publickey – Генерация открытого ключа OpenSSL из закрытого ключа
- Официальная документация по модулю openssl_publickey.
Примеры
- name: Generate a Self Signed OpenSSL certificate
openssl_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
openssl_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
openssl_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
openssl_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
openssl_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 openssl_certificate_info,
# openssl_csr_info, openssl_privatekey_info and assert modules:
- openssl_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
- openssl_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
- 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
- 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
openssl_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
openssl_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
openssl_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)
openssl_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
openssl_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
openssl_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
openssl_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
openssl_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
openssl_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
openssl_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
openssl_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~ |
| filename строка | изменено или успешно | Путь к сгенерированному сертификату Пример: /etc/ssl/crt/www.ansible.com.crt |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- 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.9/modules/openssl_certificate_module.html