community.crypto.ecs_certificate – Запрос сертификатов SSL/TLS с помощью API Entrust Certificate Services (ECS)
Примечание
Этот плагин является частью коллекции community.crypto (версия 1.4.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Чтобы использовать его в книге задач, укажите: community.crypto.ecs_certificate.
Обзор
- Создание, повторное выпуск и продление сертификатов с помощью API Entrust Certificate Services (ECS).
- Требуются учетные данные для API Entrust Certificate Services (ECS).
- Для запроса сертификата домен и организация, используемые в запросе на подписание сертификата, должны быть уже проверены в системе ECS. Эта задача не возлагается на данный модуль.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- PyYAML >= 3.11
- cryptography >= 1.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| additional_emails список / элементы=строка | Список дополнительных адресов электронной почты для получения уведомления о доставке и уведомления о сроке действия сертификата. | ||
| backup логический |
| Необходимо ли создать резервную копию сертификата в пути. | |
| 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 string | Поле для ввода произвольного текста (максимум 500 символов) | ||
| text7 string | Поле для ввода произвольного текста (максимум 500 символов) | ||
| text8 string | Поле для ввода произвольного текста (максимум 500 символов) | ||
| text9 string | Поле для ввода произвольного текста (максимум 500 символов) | ||
| eku string |
| Если указано, переопределяет использование ключа в csr. | |
| end_user_key_storage_agreement boolean |
| Конечный пользователь сертификата 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 path / обязательно | Путь к ключу для клиентского сертификата, используемого для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_client_cert_path path / обязательно | Путь к клиентскому сертификату, используемому для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_key string / обязательно | Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS). | ||
| entrust_api_specification_path path | По умолчанию: "https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml" | Путь к файлу спецификации, определяющему конфигурацию API Entrust Certificate Services (ECS). Вы можете использовать его для сохранения локальной копии спецификации, чтобы избежать ее загрузки каждый раз при использовании модуля. | |
| entrust_api_user string / обязательно | Имя пользователя для аутентификации в API Entrust Certificate Services (ECS). | ||
| force boolean |
| Если используется force, запрос сертификата выполняется независимо от того, указывает ли path на существующий действительный сертификат. Если request_type=renew, принудительное продление завершится ошибкой, если обновляемый сертификат выдан в течение последних 30 дней, независимо от значения remaining_days или возвращаемого значения cert_days — API ECS не поддерживает операцию "обновление" для сертификатов, которым не исполнилось как минимум 30 дней. | |
| full_chain_path path | Путь назначения для полной цепочки сертификатов: сертификата, промежуточных и корневых. | ||
| org string | Организация "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 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 дней, операция "обновить" недопустима и завершится ошибкой. Обратите внимание, что reissue — это операция, которая приведет к аннулированию сертификата, который повторно выдается, будьте осторожны при её использовании.
check_mode поддерживается только если request_type=new
Например, установление request_type=renew и remaining_days=30 и указание на тот же сертификат в нескольких запусках playbook означает, что при первом запуске будет запрошен новый сертификат. Он останется неизменным в последующих запусках, пока не истечёт 30 дней до истечения срока действия, после чего будет выполнена операция "обновление" ECS. | |
| 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 сертификата является <домен>.<доменная зона>, принимается только значение www.<домен>.<доменная зона>. Если CN сертификата является www.<домен>.<доменная зона>, принимается только значение <домен>.<доменная зона>. | ||
| tracking_id integer | Идентификатор отслеживания сертификата, который необходимо перевыпустить или обновить. tracking_id недействителен, если request_type=new или request_type=validate_only.Если сертификат присутствует в path и это сертификат ECS, tracking_id будет проигнорирован. Если сертификат не присутствует в path или присутствует, но от другого поставщика, сертификат, представленный tracking_id, будет обновлен или перевыпущен и сохранен в path. Это можно использовать, когда известный сертификат отсутствует на сервере, но вы хотите обновить или перевыпустить его, чтобы он управлялся скриптом Ansible. Например, если вы укажете request_type=renew, tracking_id выпущенного сертификата и path к файлу, которого нет, первая запуск задачи загрузит сертификат, указанный tracking_id (предполагая, что он по-прежнему действителен). Будущие запуски задачи (при необходимости — см. force и remaining_days) обновят сертификат, который сейчас присутствует в path. | ||
| tracking_info string | Свободная информация для отслеживания, которую нужно добавить к записи сертификата. | ||
Примечания
Примечание
-
pathдолжен быть указан в качестве места сохранения сертификата.
См. также
См. также
- community.crypto.openssl_privatekey
-
Можно использовать для создания закрытых ключей (как для сертификатов, так и для учетных записей).
- community.crypto.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.
community.crypto.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.
community.crypto.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.
community.crypto.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.
community.crypto.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.
community.crypto.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
community.crypto.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 string | изменён и если backup true
| Имя созданного файла резервной копии сертификата. Пример: /path/to/www.ansible.com.crt.2019-03-09@11:22~ |
| backup_full_chain_file string | изменён и если backup true и full_chain_path задан. | Имя созданного файла резервной копии цепочки сертификатов. Пример: /path/to/ca.chain.crt.2019-03-09@11:22~ |
| cert_days integer | успех | Количество дней, в течение которых сертификат остается действительным. Пример: 253 |
| cert_details dictionary | успех | Полный JSON-ответ из вызова Get Certificate API ECS. Хотя содержимое ответа гарантированно совместимо с новыми выпусками API ECS, Entrust рекомендует не создавать любые задачи playbook, которые будут выполнять действия на основе содержимого этого поля. Однако это может быть полезно для отладки, ведения журналов или аудита. |
| cert_status string | успех | Статус сертификата в ECS. Возможные текущие значения (которые могут быть расширены в будущем): ACTIVE, APPROVED, DEACTIVATED, DECLINED, EXPIRED, NA, PENDING, PENDING_QUORUM, READY, REISSUED, REISSUING, RENEWED, RENEWING, REVOKED, SUSPENDED.
Пример: ACTIVE |
| filename string | изменён или успех | Путь назначения для сгенерированного сертификата. Пример: /etc/ssl/crt/www.ansible.com.crt |
| serial_number integer | успех | Серийный номер выпущенного сертификата. Пример: 1235262234164342 |
| tracking_id integer | успех | Идентификатор отслеживания для ссылки и отслеживания сертификата в ECS. Пример: 380079 |
Авторы
- Chris Trufan (@ctrufan)
© 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/ecs_certificate_module.html