Формула ca-cert-formula
Формула SaltStack для установки CA-сертификатов.
| Для корректного использования формулы необходимо создать пользовательскую спецификацию и переопределить параметры по умолчанию, описанные в файле pillar.example. |
Доступные состояния
Состояние ca-cert
Мета-состояние (состояние, которое включает в себя другие состояния).
Устанавливает сертификаты в системном хранилище и хранилища профилей пользователей (NSSDB).
Имеет зависимость от ca-cert.sys, ca-cert.user через список include.
Состояние ca-cert.sys
Имеет зависимость от ca-cert.sys.install через список include.
Состояние ca-cert.sys.install
Запускает команду sys.certs_update_cmd для обновления системных сертификатов
и имеет зависимость от ca-cert.sys.certs.files через список include и реквизит onchanges.
Состояние ca-cert.sys.certs.files
Сохраняет на диске (в директории certs.dest_dir) файлы сертификата из списка certs.files.
Состояние ca-cert.user
Имеет зависимость от ca-cert.user.install через список include.
Состояние ca-cert.user.install
Имеет зависимость от ca-cert.user.nssdb через список include.
Состояние ca-cert.user.nssdb
Имеет зависимость от ca-cert.user.nssdb.update через список include.
Состояние ca-cert.user.nssdb.update
Добавляет сертификаты в хранилища профилей пользователей (NSSDB) и имеет зависимость от:
-
ca-cert.user.nssdb.createчерез списокincludeи реквизитrequire; -
ca-cert.user.certs.filesчерез списокincludeи реквизитonchanges.
Если в хранилище Pillar нет пользователей в user.usernames, пользователи будут настраиваться по имени
каталога в /home.
Состояние ca-cert.user.nssdb.create
Создает хранилище сертификатов пользователя (NSSDB) в домашней директории пользователя и
имеет зависимость от ca-cert.user.package.instal через список include и реквизит require.
Если в хранилище Pillar в поле user.usernames не указано ни одного пользователя, пользователи будут настраиваться
по имени каталога в /home.
Состояние ca-cert.user.package.install
Устанавливает пакет cacert.user.pkg.name (по умолчанию — libnss3-tools).
Состояние ca-cert.user.certs.files
Сохраняет на диске (в директории certs.dest_dir_user) файлы сертификата из списка certs.files.
Состояние ca-cert.clean
Мета-состояние (состояние, которое включает в себя другие состояния).
Удаляет сертификаты их системного хранилища и хранилища профилей пользователей (NSSDB).
Имеет зависимость от ca-cert.sys.clean, ca-cert.user.clean через список include.
Состояние ca-cert.sys.clean
Запускает команду sys.certs_update_cmd для обновления системных сертификатов и имеет
зависимость от ca-cert.sys.certs.clean через список include и реквизит onchanges.
Состояние ca-cert.sys.certs.clean
Удаляет с диска (директория certs.dest_dir) файлы сертификата из списка certs.files.
Состояние ca-cert.user.clean
Имеет зависимость от ca-cert.user.nssdb.clean, ca-cert.user.package.clean через
список включения.
Состояние ca-cert.user.nssdb.clean
Удаляет сертификаты из хранилища профилей пользователей (NSSDB) и имеет зависимость
от ca-cert.user.certs.clean через список include и реквизит require.
Состояние ca-cert.user.certs.clean
Удаляет с диска (директория certs.dest_dir_user) файлы сертификата из списка certs.files.
Состояние ca-cert.user.package.clean
Удаляет пакет cacert.user.pkg.name (по умолчанию — libnss3-tools).
Пример файла pillar.example
ca-cert:
# Переопределите значение map.jinja
lookup:
# Укажите параметры сертификатов
certs:
# Укажите список имен файлов сертификатов. Значения не могут быть пустыми
# Значения должны быть указаны в виде списка через запятую
files: [
"my_ca_1.crt",
"my_ca_2.crt",
]
# Укажите полный путь к каталогу, в котором хранятся файлы сертификатов,
# на файловом сервере Salt
source_dir: "salt://files/cacerts/"
# Укажите полный путь к каталогу для системных сертификатов на миньоне
dest_dir: "/usr/local/share/ca-certificates/"
# Укажите полный путь к каталогу для общих сертификатов пользователей на миньоне
dest_dir_user: "/usr/local/share/ca-certificates-nssdb/"
# Укажите некоторые параметры системы
sys:
# Укажите команду, которая будет выполняться для обновления системных сертификатов
certs_update_cmd: "update-ca-certificates --fresh"
# Укажите некоторые параметры пользователей
user:
# Укажите список имен пользователей для обновления сертификатов. Если пользователи
# не заданы, пользователи будут выбраны по имени каталога в /home
usernames: [
"username_1",
"username_1",
]
Изменение значений параметров по умолчанию
-
Извлеките формулу
ca-cert-formulaиз архива.$ tar -xvf ~/Downloads/inno-lcm-salt-formulas-X.Y.Z.tar.gz \ --strip-components 3 \ -C ~/ \ ./formulas/ca-cert-formula/ca-cert $ cd ~/ca-cert -
Создайте директорию
filesи скопируйте в нее необходимые сертификаты.В качестве примера используются сертификаты ЦС НУЦ Минцифры:
$ ls ./files/ russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt -
Измените файл
map.jinja(словарь со значениями по умолчанию):-
Измените значение
default.certs.source_dir, указав директориюfiles, созданную в формуле. -
Измените значение
default.certs.files, указав в списке имена файлов в директорииfiles. -
Оставьте пустым списком значение
default.user.usernames— это будет означать, что сертификаты будут установлены для всех пользователей, для которых создана папка в каталоге/home/). -
Удалите все значения, относящиеся к ОС
Debian.{% set mapdata = salt['grains.filter_by']({ 'default': { 'certs': { 'files': [ 'russian_trusted_root_ca_pem.crt', 'russian_trusted_sub_ca_pem.crt', ], 'source_dir': 'salt://ca-cert/files/', 'dest_dir': '/usr/local/share/ca-certificates/', 'dest_dir_user': '/usr/local/share/ca-certificates-nssdb/', }, 'sys': { 'certs_update_cmd': 'update-ca-certificates --fresh', }, 'user': { 'usernames': [ ], 'pkg': { 'name': 'libnss3-tools', }, }, }, }, merge=salt['pillar.get']('ca-cert:lookup'), base='default') %}
-
После переопределения значений по умолчанию, следуйте инструкциям по работе с формулой в разделе «Работа формулами».