Spec-Zone.ru › Ansible

Модуль community.crypto.get_certificate — получение сертификата с узла:порт

Примечание

Этот модуль входит в коллекцию community.crypto (версия 3.2.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.crypto.get_certificate.

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Устанавливает защищённое соединение и возвращает сведения о предоставленном сертификате.
  • Модуль использует библиотеку Python cryptography.

Требования

Перечисленные ниже компоненты должны быть установлены на узле, на котором выполняется модуль.

  • Python >= 3.10, если get_certificate_chain=true
  • cryptography >= 3.3

Параметры

Параметр

Комментарии

asn1_base64

boolean

добавлено в community.crypto 2.12.0

Следует ли кодировать значения ASN.1 в возвращаемом значении extensions с помощью Base64.

В документации долгое время утверждалось, что значения кодируются в Base64, однако на самом деле этого никогда не происходило. Для совместимости этому параметру задано значение false.

В community.crypto 3.0.0 значение по умолчанию изменено с false на true.

Варианты:

  • false
  • true ← (по умолчанию)

ca_cert

path

PEM-файл, содержащий один или несколько корневых сертификатов; если он указан, сертификат будет проверен с помощью этих корневых сертификатов.

Обратите внимание: проверяется только то, что сертификат подписан цепочкой, но не то, что сертификат действителен для узла, который его предоставляет.

ciphers

list / elements=string

добавлено в community.crypto 2.11.0

Шифры SSL/TLS, используемые для запроса.

Если задан список, все шифры объединяются по порядку с помощью :.

Подробнее см. в разделе Формат списка шифров OpenSSL.

Доступные шифры зависят от версий Python и OpenSSL/LibreSSL.

get_certificate_chain

boolean

добавлено в community.crypto 2.21.0

Если задано значение true, помимо самого сертификата будет получена цепочка сертификатов.

Цепочку, возвращённую сервером, можно найти в unverified_chain, а цепочку, прошедшую проверку, — в verified_chain.

Примечание. Для этого требуется Python 3.10 или новее. Также обратите внимание, что официальная поддержка этой возможности есть только в Python 3.13 или новее. Для достижения того же результата модуль использует внутренние API Python 3.10, 3.11 и 3.12. Будущие версии Python 3.10, 3.11 или 3.12 могут нарушить эту работу.

Варианты:

  • false ← (по умолчанию)
  • true

host

string / обязательный

Узел, сертификат которого нужно получить (можно указать IP-адрес).

port

integer / обязательный

Порт для подключения.

proxy_host

string

Узел прокси-сервера, используемого при получении сертификата.

proxy_port

integer

Порт прокси-сервера, используемого при получении сертификата.

По умолчанию: 8080

select_crypto_backend

string

Определяет, какую криптографическую серверную часть использовать.

По умолчанию выбрано значение auto; при наличии оно пытается использовать cryptography.

Если задано значение cryptography, будет предпринята попытка использовать библиотеку cryptography.

Обратите внимание: в community.crypto 3.0.0 все значения работают одинаково. В более поздней версии этот параметр будет объявлен устаревшим. Рекомендуем не задавать его явно.

Варианты:

  • "auto" ← (по умолчанию)
  • "cryptography"

server_name

string

добавлено в community.crypto 1.4.0

Имя сервера, используемое для SNI (индикация имени сервера), если имя узла является IP-адресом или отличается от имени сервера.

starttls

string

добавлено в community.crypto 1.9.0

Запрашивает защищённое соединение для протоколов, в которых клиент должен инициировать шифрование.

В настоящее время доступно только для mysql.

Варианты:

  • "mysql"

timeout

integer

Время ожидания в секундах.

По умолчанию: 10

tls_ctx_options

list / elements=any

добавлено в community.crypto 2.21.0

Параметры контекста TLS (флаги TLS/SSL OP), используемые для запроса.

Подробнее см. в списке флагов SSL OP.

Доступные параметры контекста TLS зависят от версий Python и OpenSSL/LibreSSL.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: нет

Это действие не изменяет состояние.

Может выполняться в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевую систему.

diff_mode

Поддержка: не применимо

Это действие не изменяет состояние.

В режиме diff будут возвращены сведения об изменениях (или возможных изменениях в check_mode).

idempotent

Поддержка: полная

Это действие не изменяет состояние.

При повторном запуске с теми же аргументами вне режима проверки модуль сообщает, что изменений нет.

Это предполагает, что контролируемая/запрашиваемая модулем система не изменилась значимым образом.

Примечания

Примечание

  • Сообщалось, что при использовании ca_cert в OS X проверка в некоторых условиях всегда завершается успешно.

См. также

См. также

Фильтр-плагин community.crypto.to_serial

Преобразует целое число в список шестнадцатеричных чисел, разделённых двоеточиями.

Примеры

---
- name: Get the cert from an RDP port
  community.crypto.get_certificate:
    host: "1.2.3.4"
    port: 3389
  delegate_to: localhost
  run_once: true
  register: cert

- name: Get a cert from an https port
  community.crypto.get_certificate:
    host: "www.google.com"
    port: 443
  delegate_to: localhost
  run_once: true
  register: cert

- name: How many days until cert expires
  ansible.builtin.debug:
    msg: "cert expires in: {{ expire_days }} days."
  vars:
    expire_days: >-
      {{ (
        (cert.not_after | ansible.builtin.to_datetime('%Y%m%d%H%M%SZ')) -
        (ansible_date_time.iso8601 | ansible.builtin.to_datetime('%Y-%m-%dT%H:%M:%SZ'))
      ).days }}

- name: Allow legacy insecure renegotiation to get a cert from a legacy device
  community.crypto.get_certificate:
    host: "legacy-device.domain.com"
    port: 443
    ciphers:
      - HIGH
    tls_ctx_options:
      - OP_ALL
      - OP_NO_SSLv3
      - OP_CIPHER_SERVER_PREFERENCE
      - OP_ENABLE_MIDDLEBOX_COMPAT
      - OP_NO_COMPRESSION
      - 4 # OP_LEGACY_SERVER_CONNECT
  delegate_to: localhost
  run_once: true
  register: legacy_cert

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, относящиеся только к этому модулю:

Ключ

Описание

cert

string

Сертификат, полученный с порта.

Возвращается: при успехе

expired

boolean

Логическое значение, указывающее, истёк ли срок действия сертификата.

Возвращается: при успехе

extensions

list / elements=dictionary

Расширения, применённые к сертификату.

Возвращается: при успехе

asn1_data

string

Содержимое расширения в формате ASN.1.

Если asn1_base64=true, оно будет закодировано в Base64; в противном случае будет возвращено исходное двоичное значение.

Обратите внимание: исходное двоичное значение может не сохраниться при сериализации JSON для передачи контроллеру Ansible, а также может вызвать сбои при отображении. Подробнее см. в https://github.com/ansible/ansible/issues/80258.

Примечание. В зависимости от используемой версии cryptography извлечь содержимое расширения ASN.1 невозможно; можно лишь предоставить повторно закодированное содержимое расширения, если оно было разобрано с помощью cryptography. Обычно это даёт точно такое же значение, за исключением случаев, когда исходное значение расширения было некорректным.

Возвращается: при успехе

critical

boolean

Является ли расширение критическим.

Возвращается: при успехе

name

string

Имя расширения.

Возвращается: при успехе

issuer

dictionary

Сведения об издателе сертификата.

Возвращается: при успехе

not_after

string

Дата истечения срока действия сертификата.

Возвращается: при успехе

not_before

string

Дата выдачи сертификата.

Возвращается: при успехе

serial_number

integer

Серийный номер сертификата.

Это возвращаемое значение имеет тип integer. Если серийный номер требуется в виде шестнадцатеричной строки с разделителями-двоеточиями, например 11:22:33, преобразуйте его в такой формат с помощью community.crypto.to_serial.

Возвращается: при успехе

signature_algorithm

string

Алгоритм, использованный для подписи сертификата.

Возвращается: при успехе

subject

dictionary

Сведения о субъекте сертификата (OU, CN и т. д.).

Возвращается: при успехе

unverified_chain

list / elements=string

добавлено в community.crypto 2.21.0

Цепочка сертификатов, полученная с порта.

Первым элементом всегда является cert.

Возвращается: при успехе и get_certificate_chain=true

verified_chain

list / elements=string

добавлено в community.crypto 2.21.0

Проверенная цепочка сертификатов, полученная с порта.

Первым элементом всегда является cert.

Последний сертификат — корневой сертификат, к которому ведёт цепочка. Если указан ca_cert, этот сертификат входит в указанное хранилище; в противном случае он входит в хранилище, используемое Python по умолчанию.

Обратите внимание: unverified_chain обычно не содержит корневой сертификат и может содержать другие сертификаты, не входящие в проверенную цепочку.

Возвращается: при успехе и get_certificate_chain=true

version

string

Номер версии сертификата.

Возвращается: при успехе

Авторы

  • John Westcott IV (@john-westcott-iv)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь (crypto)
  • Запросить помощь (ACME)
  • Сообщить об ошибке
  • Предложить новую возможность
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/crypto/get_certificate_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API