Чтобы сервер с платформой был доступен по протоколу HTTPS, вам понадобится SSL-сертификат. Вы можете указать данные сертификата при установке платформы или подключить его позднее. Чтобы приобрести SSL-сертификат, обратитесь в любой сервис выдачи сертификатов или выпустите бесплатный сертификат Let’s Encrypt. Подробнее о Let's Encrypt см. в официальной документации.
В статье описан порядок выпуска, подключения и замены SSL-сертификата.
Выпуск сертификата на сервере с платформой
В разделе описан порядок выпуска нового сертификата с помощью утилиты certbot. Воспользуйтесь инструкцией из раздела, если вам нужно создать сертификат с автоматическим продлением и приватный ключ на сервере платформы.
Для создания сертификата потребуется имя домена, закреплённое за сервером платформы в DNS-сервере. Это же имя должно быть указано в файле конфигурации платформы /opt/ispsystem/dci/config.json, в параметре DomainName.
Для выпуска и выгрузки сертификата:
-
Установите утилиты certbot и jq:
Ubuntu, Astra Linuxapt install software-properties-common add-apt-repository ppa:certbot/certbot apt update apt install certbot apt install jq
AlmaLinuxdnf update dnf install epel-release dnf install certbot dnf install jq
-
Отключите платформу, чтобы позволить утилите certbot использовать локальный HTTP-сервер для валидации сертификата:
dci stop
- Если на сервере установлена ОС AlmaLinux, откройте порт 80:
firewall-cmd --zone=public --add-port=80/tcp
- Выпустите сертификат:
-
Запустите утилиту certbot и передайте ей имя домена из файла конфигурации:
certbot certonly -d $(jq -r ".DomainName" /opt/ispsystem/dci/config.json)
-
Подтвердите, что вы владеете указанным доменным именем. Утилита предложит вам несколько вариантов подтверждения. Введите 1, чтобы использовать локальный сервер:
How would you like to authenticate with the ACME CA? ... Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
-
Если у вас есть сертификат с типом RSA, certbot предложит изменить тип его ключа на ECDSA. Рекомендуем изменить тип, так как это ускорит загрузку веб-интерфейса платформы. Введите U, чтобы подтвердить замену:
An RSA certificate named dci6.example.com already exists. Do you want to update its key type to ECDSA? (U)pdate key type/(K)eep existing key type: U
Вы получите сообщение, в котором указано место хранения сертификата и приватного ключа. Пример вывода для доменного имени "dci6.example.com":
Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/dci6.example.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/dci6.example.com/privkey.pem
-
-
Запустите платформу:
dci start
-
Создайте файл патча patch_add_ssl.yaml. Пример содержания файла для доменного имени "dci6.example.com":
version: "3.7" services: input: volumes: - /etc/letsencrypt/live/dci6.example.com/fullchain.pem:/etc/ssl/certs/default.domain.crt - /etc/letsencrypt/live/dci6.example.com/privkey.pem:/etc/ssl/private/default.domain.key
-
Примените созданный патч:
dci add-patch -f patch_add_ssl.yaml -p add_ssl
-
Certbot автоматически перевыпускает сертификат, когда у него заканчивается срок действия. Вы можете проверить работу автопродления с помощью команды:
certbot renew --dry-run
Подключение имеющегося сертификата
Выполните инструкции из этого раздела, если у вас уже есть сертификат. Подключить имеющийся сертификат можно во время или после установки платформы.
Подключение сертификата при установке платформы
- Скопируйте файлы сертификата на сервер с DCImanager 6. Например, в директорию /root/.
-
При установке платформы укажите путь к файлам с открытым и приватным ключом SSL-сертификата в параметрах ssl-crt-file и ssl-key-file:
Пример команды./dci install --ssl-crt-file="/root/example.crt" --ssl-key-file="/root/example.key"
Данные сертификата будут добавлены в настройки веб-сервера.
Подключение сертификата после установки платформы
-
Скопируйте файлы сертификата на сервер с DCImanager 6. Например, в директорию /root/.
После подключения файлы сертификата должны оставаться в этой директории с теми же именами. - Подключитесь к серверу с DCImanager 6 по SSH.
-
Создайте файл patch_add_ssl.yaml со следующим содержанием:
version: "3.7" services: input: volumes: - /root/dci.crt:/etc/ssl/certs/default.domain.crt - /root/dci.key:/etc/ssl/private/default.domain.key
ПоясненияНе изменяйте значения /etc/ssl/certs/default.domain.crt и /etc/ssl/private/default.domain.key — это пути к сертификату внутри контейнера docker. -
Выполните команду:
dci add-patch -f patch_add_ssl.yaml -p add_ssl
-
Укажите доменное имя сервера в параметре DomainName конфигурационного файла /opt/ispsystem/dci/config.json:
Пример файла config.json{"MysqlRootPassword":"password","LicenseToken":"token","DomainName":"dci6.example.com","CurrentVersion":"6.14.0","UpdateDate":1616262495}
-
Остановите DCImanager 6:
dci down
-
Запустите DCImanager 6:
dci start
Замена сертификата
- Замените старые файлы сертификата на актуальные. У новых файлов должны быть такие же имена, как у старых.
-
Остановите DCImanager 6:
dci down
-
Запустите DCImanager 6:
dci start
Связанные статьи: