HTTPS-сертификат (SSL/TLS) обеспечивает защищенное соединение между клиентом и сервером, подтверждая подлинность сайта и шифруя передаваемые данные. В .NET для разработки можно использовать локальный самоподписанный сертификат или купленный у центра сертификации. Сертификат необходим для безопасности (защита данных), доверия пользователей (значок замка в браузере) и выполнения требований стандартов. В разработке часто используют локальные сертификаты.
Для генерации локального .pfx-сертификата в .NET достаточно выполнить команду:
terminal |
dotnet dev-certs https -ep d:/aspnetapp.pfx -p 123456
|
В этой команде, указывается путь сохранения сертифика и пароль. Обратите внимание, такой сертификат подходит для разработки и тестирования, однако, для продакшена необходимо приобрести сертификат.
Подключение сертификата
Необходимо перейти в папку с Docker-контейнером и создать папку stimulsoft-server. Далее нужно скопировать туда сгенерированный сертификат.
После этого следует отредактировать файл docker-compose.yml, добавив параметры для работы с HTTPS. Указываются порт для HTTPS-запросов, внутренние URL-адреса (для продакшена вместо * рекомендуется указывать реальные домены или IP-адреса), а также путь к сертификату и его пароль:
docker-compose.yml |
... ASPNETCORE_HTTPS_PORTS: 8081 Urls: "https://*:8081;http://*:8080" ASPNETCORE_Kestrel__Certificates__Default__Path: "/var/lib/stimulsoft-server/aspnetapp.pfx" ASPNETCORE_Kestrel__Certificates__Default__Password: 123456 |
... |
Если директория с файлами сервера еще не примонтирована, это можно сделать в docker-compose.yml с помощью секции volumes:
docker-compose.yml |
... volumes: - ./stimulsoft-server:/var/lib/stimulsoft-server ... |
Запускаем контейнер при помощи команды:
terminal |
docker-compose up
|
Теперь Stimulsoft Server будет доступен по HTTPS на порту 8081 по адресу https://localhost:8081. Для HTTP-протокола сервер доступен по адресу http://localhost:8080.
Файл docker-compose.yml
Приведем пример содержимого docker-compose.yml:
docker-compose.yml |
services: server: image: stimulsoft/server:dev ports: - 8080:8080 - 8081:8081 volumes: - ./stimulsoft-server:/var/lib/stimulsoft-server environment: ASPNETCORE_HTTP_PORTS: 8080 ASPNETCORE_HTTPS_PORTS: 8081 Urls: "https://*:8081;http://*:8080" ASPNETCORE_Kestrel__Certificates__Default__Path: "/var/lib/stimulsoft-server/aspnetapp.pfx" ASPNETCORE_Kestrel__Certificates__Default__Password: 123456 Storage__DatabaseType: "MySql" Storage__MySqlConnectionString: "Server=mysql; port=3306; Database=server; UserId=root; Pwd=root;"
mysql: image: mysql:8.0 ports: - 3306:3306 volumes: - './mysql:/var/lib/mysql' environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_DATABASE: "server"
|