📖 Полезные статьи

← На главную · ← В статьи

NGinx + GOST с самоподписными сертификатами

Устанавливаем модуль ГОСТ

🐧 Linux и Debian #nginx#ssl#gost 2026-10-21

Устанавливаем модуль ГОСТ

sudo apt install libengine-gost-openssl1.1

Редактируем конфигурационный файл openssl

sudo nano /etc/ssl/openssl.cnf

Добавляем в начало файла

openssl_conf = openssl_def

В конец

[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Далее проверяем, что конфигурация работает (вывод должен быть не пустым)

openssl ciphers | tr ':' '\n' | grep GOST

Создаем корневой сертификат

openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:B -out ca.key

Создаем сертификат на год

openssl req -new -x509 -md_gost12_256 -days 365 -key ca.key -out ca.cer

Создаем закрытый ключ ГОСТ

openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out example.itsouls.ru.key

Создаем запрос

openssl req -new -md_gost12_256 -key example.itsouls.ru.key -out example.itsouls.ru.csr

Подписываем запрос через самоподписной сертификат

openssl x509 -req -in example.itsouls.ru.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out example.itsouls.ru.cer -days 5000

Далее устанавливаем NGinx и создаем каталог для сертификатов

sudo apt install nginx
sudo mkdir /etc/nginx/ssl
sudo cp example.itsouls.ru.cer /etc/nginx/ssl/
sudo cp example.itsouls.ru.key /etc/nginx/ssl/

Далее создаем файл конфигурации NGinx

sudo nano /etc/nginx/sites-available/gost

И добавляем в него следующее

server {
 server_name example.itsouls.ru;
 listen 443 ssl;
 ssl_certificate /etc/nginx/ssl/example.itsouls.ru.cer;
 ssl_certificate_key /etc/nginx/ssl/example.itsouls.ru.key;
 ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 location / {
 proxy_pass http://example.com;
 }
}

Далее активируем конфигурацию и перезагружаем NGinx

sudo ln -s /etc/nginx/sites-available/gost /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Для подключения вам нужен chromium-gost вместе с CryptoPro-CSP 5, в котором нужно добавить ca.cer в "Доверенные корневые центры сертификации" кнопкой установить сертификаты

NGinx + GOST с самоподписными сертификатами