Astra Linux, контейнеры и проверка сертификатов. Как быть?



@handofprincess

Приветствую! В данный момент практикант в гос учреждении, знания по астре и убунте заканчиваются моими попытками познания синтаксиса в последние пару недель, накатом юнити хаба и заключением что перед тем чтобы что то сделать, надо sudo apt-get update.
Дали задачу написать скрипт, что проверит наличие сертификатов в контейнере и установит при отсутствии
Так как я даже малейшие скрипты еще не писал, решил для начала банально научиться у себя в контейнере эти сертификаты смотреть
Пошел гуглить, нашел что для этих целей мне нужен Software-properties-common. Пишу соответствующую команду — Невозможно найти пакет Software-properties-common. Долгие пару дней исполнения инструкций с форума эффекта не дали, забываем про него. Пишу единственному специалисту на контору по астре — говорит не надо тебе оно, команда sertmng тебе нужна. Вбиваю — команда не найдена. Снова пишу, говорит ставь крипто провайдер. Нахожу крипто провайдер. Устанавливаю все нужные ему пакеты. Но… Мало того что я не слишком понимаю как им пользоваться, так еще и sertmng не заработал.
Вообщем грусть и печаль. Надеюсь, вы поможете. У того специалиста появилось миллион дел и вряд ли у него появится для вашего верного холопа время


Решения вопроса 1



@IvanU7n

оставлю это здесь в качестве подсказок для озарения (КриптоПро 4 на древней Убунте 18.04)

#!/bin/sh

certmgr=/opt/cprocsp/bin/amd64/certmgr
csptest=/opt/cprocsp/bin/amd64/csptest
export LANG=C

# хранилища
#$certmgr -enumstores all_locations
#= machine: ca, root
#= user: my, cache

# сертификаты в хранилищах
#$certmgr -list -store mca
#$certmgr -list -store mroot
#$certmgr -list -store umy
$certmgr -list -store umy | grep -E -i -- "---|subject|sha1|valid|privatekey|container"
#$certmgr -list -store ucache

# контейнеры
#$csptest -keyset -enum_containers -verifycontext -fqcn # пользователя
#$csptest -keyset -enum_containers -verifycontext -fqcn -machinekeys # компьютера
getUserContainers() {
    $csptest -keyset -enum_containers -verifycontext -fqcn | grep -F \\\\.\\
}

# сертификаты в контейнерах
#getUserContainers | while read -r container; do
#   printf "%s\n" "$container"
#   $certmgr -list -container "$container" | grep -E -i "subject|sha1|valid"
#done

# удались все сертификаты
$certmgr -delete -store umy -all
# установить сертификаты из контейнеров
getUserContainers | while read -r container; do
    printf "%s\n" "$container"
    $certmgr -install -store umy -container "$container" | grep -E -i "subject|sha1|valid"
done

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


Ответы на вопрос 3



@SunTechnik

Сертификатов существует множество видов, поэтому непонятно о каких именно идет речь. + Есть особенности при работе с сертификатами ГОСТ.

Для того чтобы установить сертификат — его надо откуда-то получить.
А тут технология сильно зависит от регламента и постановки задачи.
(Может у Вас покупные сертификаты, может от Letsencrypt ).
Для начала — посмотрите это:
https://linuxhandbook.com/check-certificate-openssl/



@Zerg89

Ну с учётом стоимости astra особенно если это лицензия одобренная ФСБ или кем-то там с нефиговой наценкой на поддержку это

У того специалиста появилось миллион дел и вряд ли у него появится для вашего верного холопа время

звучит очень странно

А конкретно по вашему вопросу есть wiki astra криптопро астра



@ky0

Для вашей задачи хорошо подходит Ansible — одной таской можно проверить наличие определённых файлов и загрузить их, если таковых не существует. Заодно, разумеется, надо будет выставить им правильные права, передёрнуть update-ca-certificates (или что там аналогичное в Астре).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *