Задание:
- Необходимо использовать отечественные алгоритмы шифрования
- Сертификаты выдаются на 30 дней
- Обеспечьте доверие сертификату для HQ-CLI
- Выдайте сертификаты веб серверам
- Перенастройте ранее настроенный реверсивный прокси nginx на протокол https
- При обращении к веб серверам https://web.au-team.irpo и https://docker.au-team.irpo у браузера клиента не должно возникать предупреждений.
Вариант реализации:
HQ-SRV:
- Установите пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Создаём закрытый ключ с алгоритмом ГОСТ-2012 (ca.key):
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key
- Создаём сертификат на 30 дней (ca.cer):
openssl req -new -x509 -md_gost12_256 -days 30 -key ca.key -out ca.cer
- Результат:

- Проверка сертификата (ca.cer):

- Создаём закрытые ключи по алгоритму ГОСТ веб-серверов: для web.au-team.irpo :
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out web.au-team.irpo.key
- для docker.au-team.irpo :
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out docker.au-team.irpo.key
- Создаём запросы на подпись ранее созданном УЦ:
- для web.au-team.irpo :
openssl req -new -md_gost12_256 -key web.au-team.irpo.key -out web.au-team.irpo.csr

- для docker.au-team.irpo :
openssl req -new -md_gost12_256 -key docker.au-team.irpo.key -out docker.au-team.irpo.csr

- Подписываем запрос в ранее созданном УЦ:
- для web.au-team.irpo :
openssl x509 -req -in web.au-team.irpo.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out web.au-team.irpo.cer -days 30
- для docker.au-team.irpo :
openssl x509 -req -in docker.au-team.irpo.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out docker.au-team.irpo.cer -days 30
- Результат:

ISP:
- Разрешаем доступ по ssh для пользователя root, чтобы можно было передать необходимые файлы с HQ-SRV:
vim /etc/openssh/sshd_config
- приводим PermitRootLogin к следующему виду:

- Перезагружаем службу sshd для применения изменений:
systemctl restart sshd
HQ-SRV:
- Передаём необходимые файлы на ISP:
scp web.au-team.irpo.key root@172.16.1.1:~/
scp web.au-team.irpo.cer root@172.16.1.1:~/
scp docker.au-team.irpo.key root@172.16.1.1:~/
scp docker.au-team.irpo.cer root@172.16.1.1:~/
ISP:
- Проверить наличие файлов ключей и сертификатов:

- Создаём каталог /etc/nginx/ssl и копируем туда файлы ключей и сертификатов:
mkdir /etc/nginx/ssl
cp web.au-team.irpo.* /etc/nginx/ssl
cp docker.au-team.irpo.* /etc/nginx/ssl
- Перенастраиваем доступ по https для доступа к сайту web.au-team.irpo и docker.au-team.irpo в конфигурационном файле /etc/nginx/sites-available.d/default.conf :
vim /etc/nginx/sites-available.d/default.conf

- Проверить наличие ошибок в конфигурационных файлах:
nginx -t
- Результат:

- Чтобы устранить подобную ошибку и чтобы nginx в результате успешно перезапустил свою службу, необходимо установить пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Перепроверить наличие ошибок в конфигурационных файлах:

- Перезапустить службу nginx :
systemctl restart nginx
HQ-SRV:
- Передаём на HQ-CLI корневой сертификат УЦ (ca.cer):
scp ca.cer user@192.168.200.2:~/
HQ-CLI:
- Проверить наличие переданного сертификата:

- Для установки корневых сертификатов необходимо поместить файлы сертификатов в /etc/pki/ca-trust/source/anchors/ и обновить общесистемный список доверенных CA (из-под суперпользователя root):
cp /home/user/ca.cer /etc/pki/ca-trust/source/anchors/ && update-ca-trust
- Проверить наличие сертификата в браузере: Яндекс:

- Chromiun:

- При попытке подключиться к нашим веб-ресурсам будет возникать следующая ошибка: Chromium:

- Яндекс:

- Решение: устанавливаем КриптоПро CSP:



- Распаковать скаченный архив:

- Из-под суперпользователя перейти в дирректорию с распакованным архивом:
cd /home/user/Загрузки/linux-amd64
- Установите пакет cryptopro-preinstall:
apt-get install -y cryptopro-preinstall
- Запустить скрипт установки:
./install_gui.sh






- Можно запустить КриптоПРО SCP и проверить наличие нашего УЦ:

- После чего проверить доступ до веб-ресурсов: https://web.au-team.irpo:



- https://docker.au-team.irpo:


НО (проблемы в исходном коде приложения):
Описанное ниже - не является призывом к действию! Просто попытка дойти до истины (редактирование запущенного контейнера - никчему хорошему не приведёт!)
- для подключения https://docker.au-team.irpo - возникают проблемы со стилями (именно при подключению по HTTPS ):

- если перейти в режим отладки (F12), то можно увидеть что файл стилей не может быть загружен (проблема на стороне исходного кода веб-приложения):

- можем попытаться войти внутрь контейнера с нашим приложением на BR-SRV :
docker exec -it testapp ash

- проблема кроется в файле app/site/site.html , а именно в строке:

- если данную строку привести к следующему виду:

- проблема с отсутствием стилей при доступе по HTTPS будет решена:

