ecs_certificate – Запрос сертификатов SSL/TLS с помощью API Entrust Certificate Services (ECS)
Новое в версии 2.9.
Обзор
- Создание, перевыпуск и продление сертификатов с помощью API Entrust Certificate Services (ECS).
- Требуются учетные данные для API Entrust Certificate Services (ECS).
- Для запроса сертификата домен и организация, используемые в запросе на подписание сертификата, должны быть уже проверены в системе ECS. Эта процедура не входит в обязанности данного модуля.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- PyYAML >= 3.11
- cryptography >= 1.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| additional_emails список / элементы=строка | Список дополнительных адресов электронной почты для получения уведомлений о доставке и уведомлений о сроке действия сертификата. | ||
| backup логический |
| Необходимо ли создать резервную копию сертификата в path. | |
| cert_expiry строка | Дата истечения действия сертификата в формате RFC3339 (дата или дата-время). Например, 2020-02-23, 2020-02-23T15:00:00.05Z.
cert_expiry поддерживается только для запросов request_type=new или request_type=renew. Если request_type=reissue, cert_expiry будет использоваться для первого выпуска сертификата, но последующие выпуски будут иметь тот же срок действия, что и исходный сертификат.Перевыпущенный сертификат всегда будет иметь тот же срок действия, что и исходный сертификат. Обратите внимание, что поддерживается только дата (день, месяц, год) для указания даты окончания действия. Если вы решите указать время окончания действия вместе с датой окончания действия, время будет скорректировано по восточному стандартному времени (EST). Это может привести к непредвиденному сдвигу даты окончания действия на предыдущий день. Применяется только для учетных записей с моделью инвентаризации пула. Можно указать только одно из cert_expiry или cert_lifetime. | ||
| cert_lifetime строка |
| Срок действия сертификата. Применяется ко всем сертификатам для учетных записей с моделью инвентаризации не пула.
cert_lifetime поддерживается только для запросов request_type=new или request_type=renew. Если request_type=reissue, cert_lifetime будет использоваться для первого выпуска сертификата, но последующие выпуски будут иметь тот же срок действия, что и исходный сертификат.Применяется к сертификатам типа cert_type= CDS_INDIVIDUAL, CDS_GROUP, CDS_ENT_LITE, CDS_ENT_PRO, SMIME_ENT для учетных записей с моделью инвентаризации пула.P1Y — сертификат со сроком действия 1 год.P2Y — сертификат со сроком действия 2 года.P3Y — сертификат со сроком действия 3 года.Можно указать только одно из cert_expiry или cert_lifetime. | |
| cert_type строка |
| Укажите тип запрашиваемого сертификата. Если сертификат перевыпускается или обновляется, этот параметр игнорируется, и используется cert_type исходного сертификата. | |
| client_id целое число | Значение по умолчанию: 1 | Идентификатор клиента, под которым подается запрос на подписание сертификата. Если идентификатор клиента не указан, сертификат будет подан под основным клиентом с идентификатором 1. При использовании клиента, отличного от основного клиента, параметр org не может быть указан. Выпущенный сертификат будет иметь значение организации в имени субъекта, представленном клиентом. | |
| csr строка | Запрос на подписание сертификата (CSR) в кодировке Base-64. csr принимается с или без форматирования PEM вокруг строки Base-64. Если csr не предоставлен при request_type=reissue или request_type=renew, сертификат будет сгенерирован с тем же открытым ключом, что и сертификат, который обновляется или перевыпускается.Если указан subject_alt_name, он переопределит альтернативные имена субъекта в CSR. Если указан eku, он переопределит расширенное использование ключа в CSR. Если указан ou, он переопределит организационные подразделения "ou=" в имени субъекта CSR, если таковые имеются. Поле организации "O=" из CSR не будет использоваться. Оно будет заменено на org, если указано, и в противном случае на организацию, привязанную к client_id. | ||
| ct_log логический |
| В соответствии с требованиями браузера, этот сертификат может быть размещен в журналах прозрачности сертификатов (CT). Это лучшая практика, которая помогает владельцам доменов отслеживать сертификаты, выпущенные для их доменов. Обратите внимание, что не все сертификаты подходят для регистрации в CT. Если ct_log не указан, используется значение по умолчанию для учетной записи. Если ct_log указан и настройки учетной записи позволяют это, ct_log переопределяет значение по умолчанию учетной записи. Если ct_log установлен в false, но настройки учетной записи установлены на "всегда регистрировать", генерация сертификата завершится ошибкой. | |
| custom_fields словарь | Сопоставление пользовательских полей для сопоставления с запросом сертификата и сертификатом. Поддерживается только если для вашей учетной записи включены пользовательские поля. Каждое указанное пользовательское поле должно быть пользовательским полем, определенным для вашей учетной записи. | ||
| date1 строка | Пользовательское поле даты. | ||
| date2 строка | Пользовательское поле даты. | ||
| date3 строка | Пользовательское поле даты. | ||
| date4 строка | Пользовательское поле даты. | ||
| date5 строка | Пользовательское поле даты. | ||
| dropdown1 строка | Пользовательское выпадающее поле. | ||
| dropdown2 строка | Пользовательское выпадающее поле. | ||
| dropdown3 строка | Пользовательское выпадающее поле. | ||
| dropdown4 строка | Пользовательское выпадающее поле. | ||
| dropdown5 строка | Пользовательское выпадающее поле. | ||
| email1 строка | Пользовательское поле электронной почты. | ||
| email2 строка | Пользовательское поле электронной почты. | ||
| email3 строка | Пользовательское поле электронной почты. | ||
| email4 строка | Пользовательское поле электронной почты. | ||
| email5 строка | Пользовательское поле электронной почты. | ||
| number1 вещественное число | Пользовательское числовое поле. | ||
| number2 вещественное число | Пользовательское числовое поле. | ||
| number3 вещественное число | Пользовательское числовое поле. | ||
| number4 вещественное число | Пользовательское числовое поле. | ||
| number5 вещественное число | Пользовательское числовое поле. | ||
| text1 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text10 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text11 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text12 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text13 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text14 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text15 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text2 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text3 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text4 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text5 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text6 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text7 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text8 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| text9 строка | Пользовательское текстовое поле (максимум 500 символов) | ||
| eku строка |
| Если указано, переопределяет использование ключа в csr. | |
| end_user_key_storage_agreement логическое |
| Конечный пользователь сертификата Code Signing должен сгенерировать и сохранить закрытый ключ для этого запроса на криптографически защищенном оборудовании для соответствия соглашению Entrust CSP и Подписки. Если запрашивается сертификат типа CODE_SIGNING или EV_CODE_SIGNING, вы должны установить end_user_key_storage_agreement в значение true, только если вы подтверждаете, что проинформируете пользователя об этом требовании.Применимо только к cert_type со значениями CODE_SIGNING и EV_CODE_SIGNING. | |
| entrust_api_client_cert_key_path путь / обязательно | Путь к ключу для сертификата клиента, используемого для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_client_cert_path путь / обязательно | Путь к сертификату клиента, используемому для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_key строка / обязательно | Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_specification_path путь | По умолчанию: "https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml" | Путь к файлу спецификации, определяющему конфигурацию API Entrust Certificate Services (ECS). Вы можете использовать его для хранения локальной копии спецификации, чтобы избежать её скачивания каждый раз при использовании модуля. | |
| entrust_api_user строка / обязательно | Имя пользователя для аутентификации в API Entrust Certificate Services (ECS). | ||
| force логическое |
| Если используется force, запрос сертификата выполняется независимо от того, указывает ли path на существующий действительный сертификат. Если request_type=renew, принудительное продление завершится ошибкой, если сертификат, который продлевается, выпущен в течение последних 30 дней, независимо от значения remaining_days или возвращаемого значения cert_days — API ECS не поддерживает операцию "продление" для сертификатов, которым не исполнилось хотя бы 30 дней. | |
| full_chain_path путь | Путь назначения для полной цепочки сертификатов: сертификата, промежуточных и корневых сертификатов. | ||
| org строка | Организация "O=" для включения в сертификат. Если org не указан, используется организация из клиента, представленного client_id. Если cert_type не PD_SSL, это поле нельзя указать, если значение client_id не "1" (основной клиент). Для клиентов, не являющихся основными, сертификаты могут быть выпущены только с организацией этого клиента. | ||
| ou список / элементы=строка | Организационная единица "OU=" для включения в сертификат.
Поведение ou зависит от того, включены ли организационные единицы для вашей учетной записи. Если поддержка организационных единиц отключена для вашей учетной записи, организационные единицы из csr и параметра ou игнорируются. Если оба параметра csr и ou указаны, значение в ou переопределит поля OU, присутствующие в полном имени субъекта в csr. Если ни csr, ни ou не указаны для операции обновления или повторного выпуска, поля OU в первоначальном сертификате повторно используются. Недействительная OU из csr игнорируется, но любая недействительная организационная единица в ou приведет к ошибке, указывающей "Неутвержденная OU". Параметр ou можно использовать для принудительной ошибки, если предоставлена неутвержденная организационная единица. В текущих продуктах может быть указана не более одной OU. Несколько OU зарезервированы для будущих продуктов. | ||
| path путь / обязательно | Путь назначения для сгенерированного сертификата в формате PEM. Если сертификат в этом месте не выпущен Entrust, будет всегда запрашиваться новый сертификат, даже если текущий сертификат технически действителен. Если в этом месте уже есть сертификат Entrust, его замена зависит от расчета remaining_days. Если существующий сертификат заменяется (см. remaining_days, force и tracking_id), запрос нового сертификата или обновление/повторный выпуск существующего сертификата зависит от request_type. | ||
| remaining_days целое число | По умолчанию: 30 | Количество оставшихся дней действия сертификата. Если cert_days < remaining_days, будет получен новый сертификат с использованием request_type.Если request_type=renew, продление завершится ошибкой, если сертификат, который продлевается, выпущен в течение последних 30 дней, поэтому не устанавливайте значение remaining_days, которое находится в пределах 30 дней от полного срока действия действующего сертификата (например, если вы запрашиваете сертификаты с 90-дневным сроком действия, не устанавливайте remaining_days со значением 60 или выше).Можно использовать параметр force, чтобы гарантировать получение нового сертификата. | |
| request_type строка |
| Операция, выполняемая, если tracking_id ссылается на действительный сертификат для повторного выпуска, или если в path уже присутствует сертификат, но указан force или cert_days < remaining_days. Указание request_type=validate_only означает, что запрос будет проверен с помощью API ECS, но сертификат не будет выпущен.Указание request_type=new означает, что запрос на сертификат всегда будет отправлен, и будет выпущен новый сертификат.Указание request_type=renew означает, что существующий сертификат (указанный tracking_id, если он присутствует, в противном случае path) будет продлён. Если сертификат для продления отсутствует, запрашивается новый сертификат.Указание request_type=reissue означает, что существующий сертификат (указанный tracking_id, если он присутствует, в противном случае path) будет повторно выпущен. Если сертификат для повторного выпуска отсутствует, запрашивается новый сертификат.Если сертификат был выпущен в течение последних 30 дней, операция 'renew' не является допустимой и завершится ошибкой. Обратите внимание, что reissue - операция, которая приведёт к аннулированию сертификата, который повторно выдан, будьте осторожны при его использовании.
check_mode поддерживается только если request_type=new
Например, установка request_type=renew и remaining_days=30 и указание на один и тот же сертификат в нескольких запусках playbook означает, что во время первого запуска будет запрошен новый сертификат. Затем он останется неизменным в последующих запусках, пока не будет в течение 30 дней до истечения срока действия, а затем будет выполнена операция ECS "renew". | |
| requester_email строка / обязательно | Электронная почта запрашивающего лица для связывания с информацией о отслеживании сертификата и получения уведомлений о доставке и истечении срока действия сертификата. | ||
| requester_name строка / обязательно | Имя запрашивающего лица для связывания с информацией о отслеживании сертификата. | ||
| requester_phone строка / обязательно | Номер телефона запрашивающего лица для связывания с информацией о отслеживании сертификата. | ||
| subject_alt_name список / элементы=строка | Идентификаторы альтернативного имени субъекта, как массив значений (применяется к cert_type со значением STANDARD_SSL, ADVANTAGE_SSL, UC_SSL, EV_SSL, WILDCARD_SSL, PRIVATE_SSL, и PD_SSL).Если вы запрашиваете новый сертификат SSL и передаете параметр subject_alt_name, все имена SAN в CSR игнорируются. Если параметр subjectAltName не передан, используются имена SAN в CSR. См. request_type, чтобы узнать больше о SAN при повторных выпусках и продлениях. В случае сертификатов типа STANDARD_SSL сертификатов, если CN сертификата равен <domain>.<tld>, принимается только значение www.<domain>.<tld>. Если CN сертификата равен www.<domain>.<tld>, принимается только значение <domain>.<tld>. | ||
| tracking_id целое число | Идентификатор отслеживания сертификата для повторного выпуска или продления.
tracking_id недействителен, если request_type=new или request_type=validate_only.Если в path присутствует сертификат ECS, tracking_id будет проигнорирован. Если сертификат не присутствует в path или присутствует, но от другого поставщика, сертификат, представленный tracking_id, будет продлён или повторно выпущен и сохранён в path. Если в path нет сертификата и параметры force и remaining_days не указывают на необходимость нового сертификата, сертификат, на который ссылается tracking_id, будет сохранён в path. Это может быть использовано, когда известный сертификат в данный момент отсутствует на сервере, но вы хотите продлить или повторно выпустить его для управления с помощью playbook ansible. Например, если вы укажете request_type=renew, tracking_id выпущенного сертификата и path к файлу, которого не существует, в первый запуск задачи будет загружен сертификат, указанный tracking_id (предполагается, что он всё ещё действителен). Последующие запуски задачи будут (если применимо - см. force и remaining_days) продлевать сертификат, который теперь присутствует в path. | ||
| tracking_info строка | Свободная информация для отслеживания, которая добавляется к записи для сертификата. | ||
Примечания
Примечание
-
pathдолжен быть указан в качестве места сохранения сертификата.
См. также
См. также
- openssl_privatekey – Генерировать ключи OpenSSL private keys
- Может быть использован для создания закрытых ключей (как для сертификатов, так и для учётных записей).
- openssl_csr – Генерировать запрос на подпись сертификата OpenSSL (CSR)
- Может быть использован для создания запроса на подпись сертификата (CSR).
Примеры
- name: Request a new certificate from Entrust with bare minimum parameters.
Will request a new certificate if current one is valid but within 30
days of expiry. If replacing an existing file in path, will back it up.
ecs_certificate:
backup: true
path: /etc/ssl/crt/ansible.com.crt
full_chain_path: /etc/ssl/crt/ansible.com.chain.crt
csr: /etc/ssl/csr/ansible.com.csr
cert_type: EV_SSL
requester_name: Jo Doe
requester_email: jdoe@ansible.com
requester_phone: 555-555-5555
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-client.key
- name: If there is no certificate present in path, request a new certificate
of type EV_SSL. Otherwise, if there is an Entrust managed certificate
in path and it is within 63 days of expiration, request a renew of that
certificate.
ecs_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr: /etc/ssl/csr/ansible.com.csr
cert_type: EV_SSL
cert_expiry: '2020-08-20'
request_type: renew
remaining_days: 63
requester_name: Jo Doe
requester_email: jdoe@ansible.com
requester_phone: 555-555-5555
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-client.key
- name: If there is no certificate present in path, download certificate
specified by tracking_id if it is still valid. Otherwise, if the
certificate is within 79 days of expiration, request a renew of that
certificate and save it in path. This can be used to "migrate" a
certificate to be Ansible managed.
ecs_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr: /etc/ssl/csr/ansible.com.csr
tracking_id: 2378915
request_type: renew
remaining_days: 79
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-client.key
- name: Force a reissue of the certificate specified by tracking_id.
ecs_certificate:
path: /etc/ssl/crt/ansible.com.crt
force: true
tracking_id: 2378915
request_type: reissue
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-client.key
- name: Request a new certificate with an alternative client. Note that the
issued certificate will have it's Subject Distinguished Name use the
organization details associated with that client, rather than what is
in the CSR.
ecs_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr: /etc/ssl/csr/ansible.com.csr
client_id: 2
requester_name: Jo Doe
requester_email: jdoe@ansible.com
requester_phone: 555-555-5555
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-client.key
- name: Request a new certificate with a number of CSR parameters overridden
and tracking information
ecs_certificate:
path: /etc/ssl/crt/ansible.com.crt
full_chain_path: /etc/ssl/crt/ansible.com.chain.crt
csr: /etc/ssl/csr/ansible.com.csr
subject_alt_name:
- ansible.testcertificates.com
- www.testcertificates.com
eku: SERVER_AND_CLIENT_AUTH
ct_log: true
org: Test Organization Inc.
ou:
- Administration
tracking_info: "Submitted via Ansible"
additional_emails:
- itsupport@testcertificates.com
- jsmith@ansible.com
custom_fields:
text1: Admin
text2: Invoice 25
number1: 342
date1: '2018-01-01'
email1: sales@ansible.testcertificates.com
dropdown1: red
cert_expiry: '2020-08-15'
requester_name: Jo Doe
requester_email: jdoe@ansible.com
requester_phone: 555-555-5555
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-client.key
Возвращаемые значения
Общие возвращаемые значения описаны в здесь, следующие - поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| backup_file строка | изменено и если backup равно true
| Имя созданного резервной копии файла сертификата. Пример: /path/to/www.ansible.com.crt.2019-03-09@11:22~ |
| backup_full_chain_file строка | изменено и если backup равно true и full_chain_path задано. | Имя файла резервной копии цепочки сертификатов. Пример: /path/to/ca.chain.crt.2019-03-09@11:22~ |
| cert_days целое число | успех | Количество дней, в течение которых сертификат остаётся действительным. Пример: 253 |
| cert_details словарь | успех | Полный ответ JSON из вызова Get Certificate API ECS. Хотя содержимое ответа гарантированно совместимо с новыми выпусками API ECS, Entrust рекомендует не создавать playbook, которые выполняют действия, основанные на содержимом этого поля. Тем не менее, оно может быть полезно для отладки, ведения журнала или аудита. |
| cert_status строка | успех | Статус сертификата в ECS. Текущие возможные значения (которые могут быть расширены в будущем): ACTIVE, APPROVED, DEACTIVATED, DECLINED, EXPIRED, NA, PENDING, PENDING_QUORUM, READY, REISSUED, REISSUING, RENEWED, RENEWING, REVOKED, SUSPENDED
Пример: ACTIVE |
| filename строка | изменено или успех | Путь назначения сгенерированного сертификата. Пример: /etc/ssl/crt/www.ansible.com.crt |
| serial_number целое число | успех | Серийный номер выпущенного сертификата. Пример: 1235262234164342 |
| tracking_id целое число | успех | Идентификатор отслеживания для ссылки и отслеживания сертификата в ECS. Пример: 380079 |
Статус
- Данный модуль не гарантирует обратной совместимости интерфейса. [превью]
- Данный модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Chris Trufan (@ctrufan)
Подсказка
Если вы заметили какие-либо проблемы в этом руководстве, вы можете отредактировать этот документ, чтобы улучшить его.
© 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/ecs_certificate_module.html