Spec-Zone.ru › Ansible

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

Примечание

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

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

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

Для использования в плейбуке укажите: community.crypto.get_certificate.

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

Описание

  • Устанавливает защищенное соединение и возвращает информацию о представленном сертификате.
  • Модуль использует библиотеку cryptography для Python.
  • Поддержка SNI (Server Name Indication) доступна только с Python 2.7 и новее.

Требования

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

  • Python >= 2.7 при использовании proxy_host, и Python >= 3.10 при get_certificate_chain=true
  • cryptography >= 1.6

Параметры

Параметр

Комментарии

asn1_base64

boolean

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

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

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

Значение по умолчанию false является устаревшим и будет изменено на true в community.crypto 3.0.0.

Варианты:

  • false
  • true

ca_cert

path

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

Обратите внимание, что это только проверяет, подписан ли сертификат цепочкой; не то, что сертификат действителен для узла, его предъявляющего.

ciphers

список / элементы=строка

добавлен в 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

строка / обязательно

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

port

целое число / обязательно

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

proxy_host

строка

Хост прокси, используемый при получении сертификата.

proxy_port

целое число

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

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

select_crypto_backend

строка

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

По умолчанию используется auto, который пытается использовать cryptography при его наличии.

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

Варианты:

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

server_name

строка

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

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

starttls

строка

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

Запрашивает безопасное соединение для протоколов, которые требуют от клиентов инициировать шифрование.

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

Варианты:

  • "mysql"

timeout

целое число

Таймаут в секундах.

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

tls_ctx_options

список / элементы=любое

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

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

Для получения дополнительной информации см. Список флагов SSL OP.

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

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

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

Может работать в check_mode и возвращать прогноз статуса изменения без изменения целевого объекта.

diff_mode

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

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

Вернёт детали изменений (или, возможно, требующих изменений в check_mode), когда используется режим сравнения.

Примечания

Примечание

  • При использовании 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

строка

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

Возвращено: успех

expired

логическое

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

Возвращено: успех

extensions

список / элементы=словарь

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

Возвращено: успех

asn1_data

строка

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

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

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

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

Возвращено: успех

critical

логическое

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

Возвращено: успех

name

строка

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

Возвращено: успех

issuer

словарь

Информация об издателе сертификата.

Возвращено: успех

not_after

строка

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

Возвращено: успех

not_before

строка

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

Возвращено: успех

serial_number

целое число

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

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

Возвращено: успех

signature_algorithm

строка

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

Возвращено: успех

subject

словарь

Информация о субъекте сертификата (OU, CN, и так далее).

Возвращено: успех

unverified_chain

список / элементы=строка

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

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

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

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

verified_chain

список / элементы=строка

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

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

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

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

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

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

version

строка

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

Возвращено: успех

Авторы

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

Ссылки на сборку

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

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

Spec-Zone.ru

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