README.md

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

Конвейеры
0 успешных
0 с ошибкой