SSL Сертификаты
Для того чтобы платформа могла работать с использованием HTTPS соединения, необходимо в прокси, на котором размещено frontend приложение, добавить сертификаты. Для этого необходимо выписать SSL-сертификаты на сервер, на котором будет размещаться приложение.
Получение сертификатов
Получение сертификатов в центре сертификации остается вне этого руководства. Для получения самоподписанного сертификата для сервера можно использовать следующий скрипт команд (для сервера Ubuntu):
generate.sh
#!/bin/sh
if [ "$#" -ne 1 ]
then
echo "Must supply a domain"
return 1
fi
DOMAIN=$1
openssl genrsa -des3 -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.pem
openssl genrsa -out $DOMAIN.key 2048
openssl req -new -key $DOMAIN.key -out $DOMAIN.csr
cat > $DOMAIN.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $DOMAIN
EOF
openssl x509 -req -in $DOMAIN.csr -CA ca.pem -CAkey ca.key -CAcreateserial \
-out $DOMAIN.crt -days 825 -sha256 -extfile $DOMAIN.ext
Для вызова скрипта необходимо указать имя домена, для которого будет выпущен сертификат:
Во время работы скрипта необходимо указать некоторые параметры для выпуска сертификатов. После этого необходимо забрать полученные файлы:
Запуск приложения в docker или docker-compose с использованием SSL-сертификатов
Для работы приложения необходимо удостовериться, что его текущая версия была собрана с возможностью подключения SSL-сертификатов. Для этого необходимо проверить файл настроек nginx внутри frontend контейнера и проверить, что в нем указаны сертификаты для работы по https.
Заходим в контейнер:
Проверяем содержимое файла конфигурации nginx:
Если команда возвращает строку вида:
значит клиент настроен и можно переходить к шагу замены сертификатов.
Если ответ пустой или строка начинается с символа #, необходимо обратиться к разработчику для получения дистрибутива с активированной функцией SSL-соединения.
Замена сертификатов
Если приложение настроено на работу с SSL, необходимо отдать ему корректные сертификаты, выпущенные для сервера:
Для этого необходимо в файле docker-compose.yml передать внутрь контейнера корректные файлы и пробросить наружу 443 порт. Пример конфигурации:
Пример docker-compose для клиентской части с подключением сертификатов ssl
vismind-frontend:
container_name: vismind-frontend
image: vismind-frontend:latest
ports:
- 8002:443
volumes:
- ./files/static:/usr/share/nginx/media/static
- ./domain.name.crt:/etc/ssl/certs/domain.crt:ro;
- ./domain.name.key:/etc/ssl/private/domain.key:ro;
depends_on:
- vismind-backend
networks:
- vismind-nt
restart: unless-stopped
Далее необходимо перезапустить приложение. После перезапуска приложение будет доступно на 443 порту по протоколу HTTPS.