Docker-контейнер для организации NGINX CDP кэша
P.S. Пока проект находится в стадии “быстро, грязно, но работает”. И ещё далеко до полноценного “решения” или волшебной кнопки. Не судите строго. Рассматривайте как Proof Of Concept.
Используется для ускорения доступа к файлам CRL, за счёт кэширования ответов CDP в памяти компьютера. Что ускоряет проверку отзыва у КриптоПро CSP. А в некоторых случаях, может решить странные проблемы при доступе к CDP. Из-за чего например, может отвалиться проверка отзыва на КриптоПро CSP версии 5.0.11455.0
(На Linux).
Можно так же использовать для снижения нагрузки на интернет. Из-за скачивания списков, если канал медленный, а компьютеров в локальной сети несколько…
На данный момент, подразумевается установка непосредственно на рабочую станцию на базе GNU/Linux. Но можно адаптировать до сетевой службы, доступной в локальной сети предприятия.
Зависимости
Необходимо установить пакеты git
(чтобы склонировать этот репозиторий), make
(Makefile) и podman
(Container Runtime)
-
Astra Linux
sudo apt update sudo apt install --no-install-recommends -y git make podman
-
Alt Linux
Способ повышения прав по умолчанию
su - # Выполняется уже в shell от имени root apt-get update apt-get install -y git make podman
Если настроен sudo
sudo apt-get update sudo apt-get install -y git make podman
-
РЭД ОС или РОСА
sudo dnf --refresh install -y git make podman
Попробовать без установки
Склонировать репозиторий
Откройте эмулятор терминала, перейдите (cd) в нужную директорию, где будет храниться копия проекта. Или откройте его через файловый менеджер сразу в нужной директории.
Выполните команду
git clone https://gitflic.ru/project/ebudget-community/nginx-cdp-cache_docker.git && cd nginx-cdp-cache_docker
Запуск в тестовом режиме
Чтобы запустить службу без установки на компьютер, используйте:
# Без прав администратора нельзя забиндить 80-ый порт. Потому пока нужно выполнять это с sudo.
# Смотри: https://gitflic.ru/project/ebudget-community/nginx-cdp-cache_docker/issue/2
sudo make run
Далее, для того, чтобы возыметь эффект на программы на компьютере, нужно установить записи в файл /etc/hosts
, с помощью команды:
# Модификация /etc/hosts невозможна без прав администратора
sudo make install-hosts
Далее, можете либо перейти на несколько разных ГОСТ-сайтов, желательно тех, что требуют входа по сертификату. Со второй попытки, “зависание” на проверке отзыва будет значительно меньше.
Либо воспользоваться curl чтобы убедиться, что кэш работает (на примере этого списка и этого):
curl -vf -o - http://crl.roskazna.ru http://crl.gosuglugi.ru http://reestr-pki.ru
# На всех трёх увидите строку `Nginx cache is working!`
curl -vf -o /dev/null http://crl.roskazna.ru/crl/ucfk_2023.crl http://reestr-pki.ru/cdp/guc2022.crl
# Заголовок X-Cache-Status будет содержать `MISS`. Т.к. мы скачиваем их впервые.
curl -vf -o /dev/null http://crl.roskazna.ru/crl/ucfk_2023.crl http://reestr-pki.ru/cdp/guc2022.crl
# Заголовок X-Cache-Status будет содержать `HIT`. И загрузка произойдёт моментально.
Так же можно проверить встроенными средствами КриптоПро. После разогрева кэша.
# Добавление бинарных файлов КриптоПро CSP в PATH
export PATH="${PATH}:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64"
# Удаление загруженных сертификатов с AIA из кэша
certmgr -delete -store uCache -all
# Удаление кэшированных списков отзыва
certmgr -delete -store uCache -crl -all
# Удаление списков, сохранённых оффлайн вручную
certmgr -delete -crl -all
# Запуск csptest с попыткой отобразить `sobi.login.roskazna.ru` и подробным выводом операций по проверке цепочки и отзыва.
CP_PRINT_CHAIN_DETAIL=1 csptest -tlsc -server sobi.login.roskazna.ru -nosave -verbose
# Сравнить скорость с проверкой без работающего кэша...
После проверки, чтобы закрыть программу и откатить изменения.
sudo make uninstall-hosts
# Если make run выполняется через sudo, то и make clean нужно тоже, т.к. будет использоваться rootful хранилище для установки
sudo make clean
Установка на постоянной основе
Когда решили, что это решение вам по душе, можно установить его на компьютер на постоянной основе. В качестве службы, запускаемой вместе с компьютером.
Установить службу на компьютер
sudo make install
Удалить службу с компьютера
sudo make uninstall
Описание
NGINX-контейнер, настроенный работать кэшем для CDP