Spec-Zone.ru › Ansible

community.crypto.openssh_cert модуль — Генерация сертификатов OpenSSH для хоста или пользователя.

Примечание

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

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

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

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

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

Описание

  • Генерация и перегенерация сертификатов OpenSSH для хоста или пользователя.

Требования

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

  • ssh-keygen

Параметры

Параметр

Комментарии

attributes

псевдонимы: attr

строка

Атрибуты, которые должен иметь полученный файловый объект.

Чтобы узнать поддерживаемые флаги, обратитесь к справке man для chattr на целевой системе.

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

Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или -.

force

булево

Перегенерировать сертификат, даже если он уже существует и действителен.

Эквивалентно regenerate=always.

Варианты:

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

group

строка

Имя группы, которая должна владеть файловым объектом, как это передается команде chown.

Если не указано, используется текущая группа текущего пользователя, если вы не являетесь root, в противном случае сохраняется предыдущая принадлежность.

identifier

строка

Укажите идентификатор ключа при подписи открытого ключа. Идентификатор, который регистрируется сервером при использовании сертификата для аутентификации.

ignore_timestamps

булево

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

Нужно ли игнорировать метки времени valid_from и valid_to при проверке идемпотентности.

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

Варианты:

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

mode

любой

Разрешения, которые должен иметь полученный файловый объект.

Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны предоставить Ansible достаточно информации, чтобы правильно их разобрать. Для согласованных результатов используйте восьмеричные числа в кавычках (например, '644' или '1777'), чтобы Ansible получил строку и смог выполнить преобразование из строки в число. Добавление ведущего нуля (например, 0755) иногда работает, но может привести к ошибкам в циклах и некоторых других ситуациях.

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

Начиная с Ansible 1.8, режим можно указать в символьном виде (например, u+rwx или u=rw,g=r,o=r).

Если mode не указан и целевой файловый объект не существует, по умолчанию будет использоваться значение umask в системе при установке режима для вновь созданного файлового объекта.

Если mode не указан и целевой файловый объект существует, будет использоваться режим существующего файлового объекта.

Указание mode — лучший способ гарантировать, что файловые объекты создаются с правильными разрешениями. См. CVE-2020-1736 для получения дополнительной информации.

options

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

Укажите параметры сертификата при подписи ключа. Действительными параметрами для сертификатов пользователя являются:

clear: Сбросить все разрешения. Это полезно для сброса набора разрешений по умолчанию, чтобы разрешения можно было добавить по отдельности.

force-command=command: Вынуждает выполнение команды вместо любой оболочки или команды, указанной пользователем, когда сертификат используется для аутентификации.

no-agent-forwarding: Отключить пересылку ssh-agent (разрешено по умолчанию).

no-port-forwarding: Отключить пересылку портов (разрешено по умолчанию).

no-pty: Отключить выделение PTY (разрешено по умолчанию).

no-user-rc: Отключить выполнение ~/.ssh/rc sshd (разрешено по умолчанию).

no-x11-forwarding: Отключить пересылку X11 (разрешено по умолчанию).

permit-agent-forwarding: Разрешить пересылку ssh-agent.

permit-port-forwarding: Разрешить пересылку портов.

permit-pty: Разрешить выделение PTY.

permit-user-rc: Разрешить выполнение ~/.ssh/rc sshd.

permit-x11-forwarding: Разрешить пересылку X11.

source-address=address_list: Ограничить адреса источников, из которых сертификат считается действительным. address_list — это список адресов/масок сети через запятую в формате CIDR.

В настоящее время для ключей хостов параметры недействительны.

owner

строка

Имя пользователя, который должен владеть файловым объектом, как это передается команде chown.

Если не указано, используется текущий пользователь, если вы не являетесь root, в противном случае сохраняется предыдущая принадлежность.

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

path

путь / обязательно

Путь к файлу, содержащему сертификат.

pkcs11_provider

строка

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

Для использования ключа подписи, расположенного на токенах PKCS#11, установите это значение в имя (или полный путь) разделяемой библиотеки для использования с токеном. Обычно libpkcs11.so.

Если это значение установлено, signing_key должен указывать на файл, содержащий открытый ключ ЦС.

principals

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

Сертификаты могут быть ограничены по действию наборы имен принципалов (пользователь/хост). По умолчанию сгенерированные сертификаты действительны для всех пользователей или хостов.

public_key

путь

Путь к открытому ключу, который будет подписан с помощью ключа подписи для генерации сертификата.

Требуется, если state равен present.

regenerate

string

added in community.crypto 1.8.0

Когда never задача завершится ошибкой, если сертификат уже существует по адресу path и нечитаем, в противном случае новый сертификат будет сгенерирован только в том случае, если существующий сертификат отсутствует.

Когда fail задача завершится ошибкой, если сертификат уже существует по адресу path и не соответствует параметрам модуля.

Когда partial_idempotence существующий сертификат будет перегенерирован на основе serial_number, signature_algorithm, type, valid_from, valid_to, valid_at, и principals. valid_from и valid_to могут быть исключены с помощью ignore_timestamps=true.

Когда full_idempotence identifier, options, public_key, и signing_key также учитываются при сравнении с существующим сертификатом.

always эквивалентно force=true.

Варианты:

  • "never"
  • "fail"
  • "partial_idempotence" ← (по умолчанию)
  • "full_idempotence"
  • "always"

selevel

string

Часть уровня SELinux контекста объекта файловой системы.

Это атрибут MLS/MCS, иногда известный как range.

При установке в _default будет использована часть политики level если она доступна.

serial_number

integer

Укажите порядковый номер сертификата. Сервер регистрирует порядковый номер при использовании сертификата для проверки подлинности. Порядковый номер сертификата может использоваться в списке аннулированных ключей. Порядковый номер может быть опущен для проверок, но должен быть указан повторно для нового сертификата. Примечание: значение по умолчанию, устанавливаемое ssh-keygen, равно 0.

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

serole

string

Часть роли контекста объекта файловой системы SELinux.

При установке в _default будет использована часть политики role если она доступна.

setype

string

Часть типа контекста объекта файловой системы SELinux.

При установке в _default будет использована часть политики type если она доступна.

seuser

string

Часть пользователя контекста объекта файловой системы SELinux.

По умолчанию используется политика system, где это применимо.

При установке в _default будет использована часть политики user если она доступна.

signature_algorithm

string

added in community.crypto 1.10.0

Начиная с OpenSSH 8.2, алгоритм подписи SHA-1 для ключей RSA был отключен, и ssh будет отклонять сертификаты хостов, подписанные с помощью алгоритма SHA-1. OpenSSH 8.1 сделал rsa-sha2-512 алгоритмом по умолчанию при работе в качестве CA и подписи сертификатов с помощью ключа RSA. Однако для версий OpenSSH, меньших 8.1, алгоритмы подписи SHA-2, rsa-sha2-256 или rsa-sha2-512, должны быть указаны с помощью этого параметра, если требуется совместимость с более новыми клиентами ssh. И наоборот, если хосты, использующие OpenSSH версии 8.2 или выше, должны оставаться совместимыми с клиентами ssh на OpenSSH менее 7.2, то ssh-rsa может использоваться при генерации сертификатов хостов (также требуется соответствующая настройка sshd_config для добавления ssh-rsa к ключевому слову CASignatureAlgorithms).

Использование любого значения для этого параметра с не-RSA signing_key приведет к ошибке этого модуля.

Примечание: версии OpenSSH до 7.2 не поддерживают алгоритмы подписи SHA-2 для ключей RSA, а версии OpenSSH до 7.3 не поддерживают алгоритмы подписи SHA-2 для сертификатов.

См. https://www.openssh.com/txt/release-8.2 для получения дополнительной информации.

Варианты:

  • "ssh-rsa"
  • "rsa-sha2-256"
  • "rsa-sha2-512"

signing_key

path

Путь к закрытому ключу openssh, используемому для подписи открытого ключа для генерации сертификата.

Если закрытый ключ находится на токене PKCS#11 (pkcs11_provider), установите этот параметр в путь к открытому ключу.

Требуется, если state равен present.

state

string

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

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

type

string

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

Требуется, если state равен present.

Варианты:

  • "host"
  • "user"

unsafe_writes

boolean

Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из объекта целевой файловой системы.

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

Этот параметр позволяет Ansible перейти к небезопасным методам обновления объектов файловой системы, когда атомарные операции завершаются ошибкой (однако он не принуждает Ansible к выполнению небезопасных записей).

ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.

Варианты:

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

use_agent

boolean

added in community.crypto 1.3.0

Использовать ли ssh-keygen ключ CA, находящийся в ssh-agent.

Варианты:

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

valid_at

string

Проверьте, действителен ли сертификат в определённый момент времени. Если нет, сертификат будет перегенерирован. Время всегда интерпретируется как UTC. В основном используется с относительным временем для valid_from и/или valid_to. Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.

valid_from

string

Момент времени, с которого сертификат действителен. Время можно указать как относительное время, так и абсолютную метку времени. Время всегда интерпретируется как UTC. Допустимые форматы: [+-]timespec | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS | YYYY-MM-DD HH:MM:SS | always, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h). Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.

Значение always поддерживается только для OpenSSH 7.7 и более поздних версий, однако значение 1970-01-01T00:00:01 может быть использовано с более ранними версиями в качестве эквивалентного выражения.

Чтобы пропустить это значение при сравнении с существующим сертификатом, установите ignore_timestamps=true.

Требуется, если state равно present.

valid_to

string

Момент времени, до которого сертификат действителен. Время можно указать как относительное время, так и абсолютную метку времени. Время всегда интерпретируется как UTC. Допустимые форматы: [+-]timespec | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS | YYYY-MM-DD HH:MM:SS | forever , где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h). Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.

Чтобы пропустить это значение при сравнении с существующим сертификатом, установите ignore_timestamps=true.

Требуется, если state равно present.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

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

diff_mode

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

При использовании режима diff вернёт подробности о том, что изменилось (или, возможно, требует изменения в check_mode).

safe_file_operations

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

Использует функции Ansible для строгих операций с файлами, чтобы обеспечить правильные разрешения и избежать повреждения данных.

См. также

См. также

community.crypto.parse_serial фильтр плагин

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

Примеры

- name: Generate an OpenSSH user certificate that is valid forever and for all users
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever

# Generate an OpenSSH host certificate that is valid for 32 weeks from now and will be regenerated
# if it is valid for less than 2 weeks from the time the module is being run
- name: Generate an OpenSSH host certificate with valid_from, valid_to and valid_at parameters
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: +0s
    valid_to: +32w
    valid_at: +2w
    ignore_timestamps: true

- name: Generate an OpenSSH host certificate that is valid forever and only for example.com and examplehost
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever
    principals:
        - example.com
        - examplehost

- name: Generate an OpenSSH host Certificate that is valid from 21.1.2001 to 21.1.2019
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: "2001-01-21"
    valid_to: "2019-01-21"

- name: Generate an OpenSSH user Certificate with clear and force-command option
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever
    options:
        - "clear"
        - "force-command=/tmp/bla/foo"

- name: Generate an OpenSSH user certificate using a PKCS#11 token
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/ca_public_key.pub
    pkcs11_provider: libpkcs11.so
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever

Значения возврата

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

Ключ

Описание

filename

string

путь к сертификату

Возвращаемое значение: changed или success

Пример: "/tmp/certificate-cert.pub"

info

list / elements=string

Информация о сертификате. Вывод ssh-keygen -L -f.

Возвращаемое значение: change или success

type

string

тип сертификата (хост или пользователь)

Возвращаемое значение: changed или success

Пример: "host"

Авторы

  • David Kainz (@lolcube)

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

  • Система отслеживания задач
  • Репозиторий (источники)
  • Задайте вопрос (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/openssh_cert_module.html

Spec-Zone.ru

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