Формула ca-cert-formula

Формула для установки 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",
      ]
      # Укажите полный путь к каталогу, в котором хранятся файлы сертификатов,
      #  на файловом сервере
      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",
      ]

Изменение значений параметров по умолчанию

  1. Извлеките формулу ca-cert-formula из архива.

    $ tar -xvf ~/Downloads/osmax-salt-formulas-X.Y.Z.tar.gz \
        --strip-components 3 \
        -C ~/ \
        ./formulas/ca-cert-formula/ca-cert
    $ cd ~/ca-cert
  2. Создайте директорию files и скопируйте в нее необходимые сертификаты.

    В качестве примера используются сертификаты ЦС НУЦ Минцифры:

    $ ls ./files/
    russian_trusted_root_ca_pem.crt  russian_trusted_sub_ca_pem.crt
  3. Измените файл map.jinja(словарь со значениями по умолчанию):

    1. Измените значение default.certs.source_dir, указав директорию files, созданную в формуле.

    2. Измените значение default.certs.files, указав в списке имена файлов в директории files.

    3. Оставьте пустым списком значение default.user.usernames — это будет означать, что сертификаты будут установлены для всех пользователей, для которых создана папка в каталоге /home/).

    4. Удалите все значения, относящиеся к ОС 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') %}

После переопределения значений по умолчанию, следуйте инструкциям по работе с формулой в разделе «Работа формулами».