Asp net core развертывание linux

Содержание
  1. Публикация веб-приложения ASP.NET Core в службе приложений на Linux с помощью Visual Studio
  2. Предварительные требования
  3. Публикация в службе приложений Azure в Linux
  4. Очистка ресурсов
  5. Следующие шаги
  6. ASP.NET Core: ваше первое приложение на Linux c использованием Visual Studio Code
  7. Установка .Net Core и Visual Studio Code
  8. Установка .Net Core:
  9. Установка Visual Studio Code
  10. Установка расширения C#
  11. Подготовка среды разработки и формирование шаблонов приложений
  12. Инициализация проекта
  13. Запуск генератора проекта
  14. Разработка приложений ASP.NET Core MVC на Linux с помощью Visual Studio Code
  15. Запуск приложения при помощи Kestrel
  16. Размещение ASP.NET Core в операционной системе Linux с Apache
  17. Предварительные требования
  18. Публикация и копирование приложения
  19. Настройка прокси-сервера
  20. Установка Apache
  21. Настройка Apache
  22. Мониторинг приложения
  23. Создание файла службы
  24. Просмотр журналов
  25. Защита данных
  26. Защита приложения
  27. Настройка брандмауэра
  28. Конфигурация HTTPS
  29. Дополнительные предложения Apache
  30. Перезапуск приложений после обновления общей платформы
  31. Дополнительные заголовки
  32. Защита Apache от атак кликджекинга
  33. Сканирование типа MIME
  34. Балансировка нагрузки
  35. Ограничения скорости
  36. Длинные поля заголовка запроса

Публикация веб-приложения ASP.NET Core в службе приложений на Linux с помощью Visual Studio

Начиная с Visual Studio 2017 версии 15.7 вы можете публиковать приложения ASP.NET Core в службе приложений Azure для Linux (с использованием контейнеров) с помощью одного из следующих методов.

Для непрерывного (или автоматического) развертывания приложений используйте Azure DevOps с Azure Pipelines.

Для однократного развертывания (или развертывания вручную) используйте средство публикации в Visual Studio, чтобы публиковать приложения ASP.NET Core в службе приложений для Linux (с помощью контейнеров).

В этой статье описывается использование средства публикации для однократного развертывания.

Предварительные требования

  • Visual Studio 2019, установленная с соответствующими рабочими нагрузками для выбранного языка:
    • ASP.NET: ASP.NET и разработка веб-приложений
  • Visual Studio 2017, установленная с соответствующими рабочими нагрузками для выбранного языка:
    • ASP.NET: ASP.NET и разработка веб-приложений

Подписка Azure. Если у вас еще нет подписки, подпишитесь на бесплатную версию, которая включает кредит в размере 200 USD на 30 дней и 12 месяцев доступа к популярным бесплатным службам.

ASP.NET Core. Следуйте инструкциям из статьи Краткое руководство. Создание первого веб-приложения ASP.NET Core с помощью Visual Studio или выполните описанные ниже действия.

На начальном экране Visual Studio 2019 выберите Создать проект. Если окно запуска не открыто, выберите Файл > Окно запуска. В поле поиска введите веб-приложение, укажите C# в качестве языка, выберите ASP.NET Core Web Application (Model-View-Controller) (Веб-приложение ASP.NET Core (модель — представление — контроллер)) и щелкните Далее. На следующем экране присвойте проекту имя MyASPApp и нажмите кнопку Далее.

Выберите рекомендуемую версию целевой платформы (.NET Core 3.1) или .NET 5 и щелкните Создать.

В Visual Studio 2017 выберите Файл > Создать проект, а затем щелкните Visual C# > .NET Core и выберите Веб-приложение ASP.NET Core. При появлении запроса выберите шаблон Веб-приложение (модель-представление-контроллер), убедитесь, что выбран параметр Без проверки подлинности, после чего нажмите кнопку ОК.

Прежде чем выполнять действия по развертыванию, выполните сборку проекта с помощью команды Сборка > Построить решение.

Публикация в службе приложений Azure в Linux

В обозревателе решений щелкните проект правой кнопкой мыши и выберите пункт Опубликовать (или воспользуйтесь командой меню Сборка > Опубликовать).

Если ранее вы настроили какие-либо профили публикации, появится окно Опубликовать. Нажмите кнопку Создать.

В окне Публикация выберите Azure.

Выберите Служба приложений Azure (Linux) и нажмите кнопку Далее.

При необходимости выполните вход с использованием своей учетной записи Azure. Выберите Создание новой службы приложений Azure.

В диалоговом окне Создание службы приложений Azure (Linux) необходимо заполнить поля Имя приложения, Группа ресурсов и План службы приложений. Вы можете сохранить эти имена или изменить их. Когда все будет готово, щелкните Создать.

В диалоговом окне Публикация вновь созданный экземпляр выбирается автоматически. Когда все будет готово, нажмите кнопку Готово.

Нажмите Публиковать. Visual Studio выполнит развертывание приложения в службе приложений Azure, после чего веб-приложение будет загружено в браузер. В панели Опубликовать для свойств проекта будут отображаться URL-адрес сайта и другие сведения.

Очистка ресурсов

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы не планируете использовать эти ресурсы в будущем, вы можете удалить их, удалив саму группу ресурсов. В меню слева на портале Azure выберите Группы ресурсов, после чего щелкните myResourceGroup. На странице группы ресурсов проверьте, действительно ли требуется удалить перечисленные ресурсы. Выберите Удалить, введите myResourceGroup в текстовое поле, после чего щелкните Удалить.

Следующие шаги

Из этого краткого руководства вы узнали, как использовать Visual Studio, чтобы создать профиль публикации для развертывания в службе приложений на Linux. Ознакомьтесь с дополнительными материалами, посвященными публикации в Linux с использованием Azure.

Источник

ASP.NET Core: ваше первое приложение на Linux c использованием Visual Studio Code

Решил недавно написать небольшое ASP.Net MVC приложение после многолетнего перерыва и знающие люди на Хабре подсказали попробовать новый ASP.Net Core, тем более, что он работает в Линуксе из коробки без необходимости задействовать mono, и, судя по последним тестам, даже показывает неплохую производительность. За основу взял аналогичную статью для Mac, однако здесь в отличии от вдохновившей меня статьи хочу описать процесс пошагово в одном месте, для того, чтобы не пришлось лазить по перекрёстным ссылкам, пытаясь разобраться как установить непонятно для чего предназначенные приложения и пакеты. Такое подробное описание процесса возможно поможет многим избежать граблей, с которыми пришлось столкнуться мне. Несколько фраз и рисунков, в части одинаковой для любой платформы, с правками и корректировками взяты из статьи для Mac.

Установка .Net Core и Visual Studio Code

Приводимые здесь команды установки подходят для дистрибутивов Ubuntu 16.04/Mint 18.x, для остальных можно найти здесь.

Установка .Net Core:

Устанавливаем новейший на данный момент RC4 для совместимости с новейшим генератором проектов aspnet:

Установка Visual Studio Code

Устанавливается легко в пару кликов по этой ссылке.

Установка расширения C#

Запускаем Visual Studio Code, нажимаем Ctrl-P, вводим команду:
ext install csharp

В появившейся слева панели нажимаем «Установить» напротив соответствующего расширения, если это не произошло автоматически. Visual Studio Code можно пока закрыть.

Подготовка среды разработки и формирование шаблонов приложений

Устанавливаем новейший node.js с оригинального сайта (тот, что идёт с дистрибутивом не подходит), он нам нужен из-за менеджера пакетов npm, который идёт вместе с ним:
Для других дистрибутивов инструкция здесь.

Инициализация проекта

Для инициализации используется скаффолдер Yeoman — инициализатор проекта, включающий в себя развёртывание файловой структуры и генерацию шаблона проекта, т.е. исходного кода приложения. Включает в себя скаффолдер Yo, менеджер пакетов Bower и менеджер задач Grunt. При установке Yo вам будут установлены также Bower и Grunt. Здесь устанавливаем в любом терминале также новейший генератор aspnet, в котором возвращена система сборки msbuild вместо project.json:

Читайте также:  Как открыть меню сервис windows

Запуск генератора проекта

Примечание: При выборе пункта WebApplication будет создан шаблон приложения с авторизацией клиентов, где в качестве БД может использоваться SQLite (генератор выдаст соответствующие инструкции как это сделать). Если же вы захотите в качестве базы использовать что-нибудь покруче, то можно добавить поддержку PostgreSQL:

  • Установка: npm install -g generator-aspnetpostgresql
  • Генерация шаблона: yo aspnetpostgresql

Данный генератор основан на том же самом OmniSharp/generator-aspnet. Версия несколько устарела, поэтому для запуска нужно сначала выполнить dotnet migrate & dotnet restore — именно в таком порядке.

Your project is now created, you can use the following commands to get going
cd «WebApplicationBasic»
dotnet restore
dotnet build (optional, build will also happen with it’s run)
dotnet run

Восстановить и собрать можно, а вот запускать пока рано: нужно ещё кое что сделать.

Разработка приложений ASP.NET Core MVC на Linux с помощью Visual Studio Code

Теперь запустите Visual Studio Code.

Выберите пункт Файл → Отрыть папку и выберите папку, в которой Вы создали шаблон приложения ASP.NET Core MVC с помощью yo.

При первом запуске Visual Studio Code выдаст предупреждение об отсутствии необходимых инструментов для сборки и отладки. Нажимаем Yes , чтобы добавить их. Без этого автоматическая отладка и сборка средствами Visual Studio Code будет недоступна, а только через терминал командами dotnet build и dotnet run .

В Терминале Visual Studio Code (Ctrl-`) выполните команду dotnet restore , чтобы восстановить зависимости проекта (если не сделали этого раньше). Другой способ — выполнить команду Ctrl-Shift-P в Visual Studio Code и затем ввести dot, как показано ниже (у меня почему-то не заработало):

Для тех, кто только приступает к использованию Visual Studio Code (или Code, для краткости), следует заметить, что данный продукт не только имеет удобный, простой и отзывчивый интерфейс, обеспечивающий быструю работу с файлами, но он также предоставляет инструменты для наиболее эффективного написания кода.

В левой панели навигации находятся пять значков, представляющие четыре viewlet:

  • Explore
  • Search
  • Git
  • Debug
  • Extensions

Explore viewlet позволяет быстро перемещаться по системе каталогов, а также облегчает обзор файлов, с которыми вы работаете. При наличии несохраненных изменений в файлах специальный значок на экране будет уведомлять об этом; упрощается процесс создания новых файлов и папок (для этого не надо открывать новое окно). Также удобно пользоваться командой Save All (Сохранить все), доступной в меню, которое появляется при наведении курсора мыши.

Code интегрируется с Git, если он установлен на вашем компьютере. При помощи Git viewlet можно создавать новые репозитории, подтверждать изменение кода, отправлять изменения.

Debug viewlet поддерживает интерактивную отладку приложений.

Кроме того, в редакторе Code есть множество замечательных функций. Вы увидите, что неиспользованные операторы using будут подчеркнуты и могут быть удалены автоматически при помощи Сtrl-. , если значок лампочки отображается на экране. Также можно видеть, сколько ссылок на классы и методы есть в проекте. Если вы переходить с Visual Studio, то вы можете использовать многие знакомые сочетания клавиш, например, Сtrl-K+C , чтобы закомментировать блок кода или Ctrl-K-U , чтобы раскомментировать его.

Запуск приложения при помощи Kestrel

Kestrel — это кросс-платформенный HTTP сервер, основанный на libuv — библиотеке асинхронного ввода-вывода. Для его установки нужно установить соответствующий пакет NuGet: Microsoft.AspNetCore.Server.Kestrel. Сделать это можно двумя способами:

  • Установив .Net Core Project Manager (Nuget) через viewlet Extensions (Расширения): Ctrl-Shift-P , набираем Nuget , ↵, затем Kestrel ↵ выбираем Microsoft.AspNetCore.Server.Kestrel
  • Через командную строку в терминале редактора vs code editor:

Всё, теперь можно запускать: нажимаем F5 или в терминале dotnet run , при этом автоматически запускается браузер с приложением по адресу: localhost:5000 . Чтобы остановить веб-сервер, нажмите Ctrl+C. Вот и всё, можете наслаждаться вашим первым приложением ASP.Net Core:

Источник

Размещение ASP.NET Core в операционной системе Linux с Apache

Из этого руководства вы узнаете, как настроить Apache в качестве обратного прокси-сервера в CentOS 7, чтобы перенаправлять трафик HTTP в веб-приложение ASP.NET Core, работающее на сервере Kestrel. Расширение mod_proxy и связанные с ним модули создают обратный прокси-сервер.

Предварительные требования

  • Сервер под управлением CentOS 7 и учетная запись обычного пользователя с правами sudo.
  • Установите среду выполнения .NET Core на сервере.
    1. Перейдите на страницу скачивания .NET Core.
    2. Выберите последнюю не предварительную версию .NET Core.
    3. Скачайте последнюю не предварительную версию среды выполнения из таблицы под заголовком Run apps — Runtime (Выполнение приложений — среда выполнения).
    4. Щелкните ссылку Package manager instructions (Инструкции диспетчера пакетов) для Linux и выполните инструкции для CentOS.
  • Существующее приложение ASP.NET Core.

Перезапустить приложения ASP.NET Core, размещенные на сервере, можно в любой момент после обновления общей платформы.

Публикация и копирование приложения

Если приложение запускается локально и не настроено для безопасного подключения (HTTPS), следует применять один из следующих подходов.

  • Настройка приложения для обработки безопасных локальных подключений. Дополнительные сведения см. в разделе Конфигурация HTTPS.
  • Удалите https://localhost:5001 (при его наличии) из свойства applicationUrl в файле Properties/launchSettings.json.

Запустите dotnet publish в среде разработки, чтобы упаковать приложение в каталог (например, bin/Release/ /publish), который может выполняться на сервере:

Приложение может быть опубликовано как автономное развертывание, если вы предпочитаете не сохранять среду выполнения .NET Core на сервере.

Скопируйте приложение ASP.NET Core на сервер с помощью инструмента, интегрированного в ваш рабочий процесс (например, SCP или SFTP). Обычно веб-приложения находятся в каталоге var (например, var/www/helloapp).

Если развертывание выполняется в рабочей среде, рабочий процесс непрерывной интеграции автоматически опубликует приложение и скопирует его ресурсы на сервер.

Настройка прокси-сервера

Обратный прокси-сервер — это стандартный вариант настройки для обслуживания динамических веб-приложений. Обратный прокси-сервер завершает HTTP-запрос и перенаправляет его в приложение ASP.NET.

Прокси-сервер перенаправляет запросы клиента на другой сервер, а не обрабатывает их самостоятельно. Обратный прокси-сервер перенаправляет запросы в фиксированное назначение обычно от имени клиентов. В этом руководстве мы настроим Apache в качестве обратного прокси-сервера, который работает на том же сервере, где Kestrel предоставляет приложение ASP.NET Core.

Читайте также:  Windows 10 с последними обновлениями microsoft

Так как запросы перенаправляются обратным прокси-сервером, используйте ПО промежуточного слоя перенаправления заголовков, которое входит в пакет Microsoft.AspNetCore.HttpOverrides. Это ПО обновляет Request.Scheme , используя заголовок X-Forwarded-Proto , что обеспечивает правильную работу URI перенаправления и других политик безопасности.

Любой компонент, который зависит от схемы, например проверка подлинности, генерация ссылок, перенаправление и геолокация, должен находиться после вызова ПО промежуточного слоя перенаправления заголовков.

ПО промежуточного слоя перенаправления заголовков должно выполняться до другого ПО промежуточного слоя. Такой порядок гарантирует, что ПО промежуточного слоя, полагающееся на сведения о перенаправленных заголовках, может использовать значения заголовков для обработки. Сведения о запуске ПО промежуточного слоя перенаправления заголовков после ПО промежуточного слоя диагностики и обработки ошибок см. в разделе Порядок ПО промежуточного слоя перенаправления заголовков.

Вызовите UseForwardedHeaders метод наверху Startup.Configure , прежде чем вызывать другое ПО промежуточного слоя. В ПО промежуточного слоя настройте перенаправление заголовков X-Forwarded-For и X-Forwarded-Proto :

Если параметр ForwardedHeadersOptions не задан для ПО промежуточного слоя, по умолчанию перенаправляются заголовки None .

Прокси-серверы под управлением петлевых адресов ( 127.0.0.0/8, [::1] ), включая стандартные адреса localhost (127.0.0.1), считаются доверенными по умолчанию. Если запросы между Интернетом и веб-сервером обрабатывают другие прокси-серверы или сети организации, добавьте их в список KnownProxies или KnownNetworks с помощью ForwardedHeadersOptions. Следующий пример добавляет доверенный прокси-сервер с IP-адресом 10.0.0.100 в ПО промежуточного слоя для перенаправления заголовков KnownProxies в Startup.ConfigureServices :

Установка Apache

Обновите пакеты CentOS до последних стабильных версий:

Установите веб-сервер Apache на CentOS, выполнив одну команду yum :

Пример выходных данных этой команды:

В нашем примере выходные данные содержат строку httpd.86_64, так как используется 64-разрядная версия CentOS 7. Чтобы проверить, где установлен Apache, выполните whereis httpd из командной строки.

Настройка Apache

Файлы конфигурации для Apache находятся в каталоге /etc/httpd/conf.d/ . В алфавитном порядке обрабатываются все файлы с расширением .conf, а также файлы конфигурации модуля из папки /etc/httpd/conf.modules.d/ , где содержатся файлы конфигурации, необходимые для загрузки модулей.

Создайте для приложения файл конфигурации с именем helloapp.conf:

Блок VirtualHost может встречаться несколько раз в одном или нескольких файлах на сервере. С представленным выше файлом конфигурации Apache принимает трафик от любого источника через порт 80. Он обслуживает домен www.example.com , а псевдоним *.example.com указывает на тот же веб-сайт. Дополнительные сведения см. в статье о поддержке виртуальных узлов на основе имен. Запросы к корневому каталогу перенаправляются на порт 5000 того же сервера по адресу 127.0.0.1. Для двусторонней связи требуются ProxyPass и ProxyPassReverse . Сведения о том, как изменить IP-адрес и порт Kestrel, см. в разделе о настройке конечных точек Kestrel.

Блок VirtualHost может встречаться несколько раз в одном или нескольких файлах на сервере. С представленным выше файлом конфигурации Apache принимает трафик от любого источника через порт 80. Он обслуживает домен www.example.com , а псевдоним *.example.com указывает на тот же веб-сайт. Дополнительные сведения см. в статье о поддержке виртуальных узлов на основе имен. Запросы к корневому каталогу перенаправляются на порт 5000 того же сервера по адресу 127.0.0.1. Для двусторонней связи требуются ProxyPass и ProxyPassReverse . Сведения о том, как изменить IP-адрес и порт Kestrel, см. в разделе о настройке конечных точек Kestrel.

Если не удастся указать правильную директиву ServerName в блоке VirtualHost, приложение будет иметь значительные уязвимости. Привязки с подстановочными знаками на уровне дочерних доменов (например, *.example.com ) не создают таких угроз безопасности, если вы полностью контролируете родительский домен (в отличие от варианта *.com , создающего уязвимость). Дополнительные сведения см. в документе rfc7230, раздел 5.4.

Ведение журнала можно настроить отдельно для каждого VirtualHost с помощью директив ErrorLog и CustomLog . Журналы ошибок сохраняются в расположение ErrorLog , а параметр CustomLog задает имя и формат для файла журнала. В нашем примере здесь фиксируются сведения о запросах. Для каждого запроса создается одна строка.

Сохраните файл и протестируйте конфигурацию. Если проверка выполнена успешно, ответ должен быть Syntax [OK] .

Мониторинг приложения

Настройка Apache на переадресацию запросов к порту http://localhost:80 в приложение ASP.NET Core, работающее на базе Kestrel по адресу http://127.0.0.1:5000 , теперь завершена. Однако в Apache не настроено управление процессом Kestrel. Для запуска и мониторинга базового веб-приложения используйте systemd и создайте файл службы. systemd — это система инициализации, предоставляющая различные функции для запуска и остановки процессов, а также управления ими.

Создание файла службы

Создайте файл определения службы.

Пример файла службы для приложения:

В предыдущем примере управляющий службой пользователь задается с помощью параметра User . Этот пользователь ( apache ) должен существовать и иметь права владельца в отношении файлов приложения.

Используйте TimeoutStopSec , чтобы настроить время ожидания до завершения работы приложения после начального сигнала прерывания. Если приложение не завершит работу в течение этого периода, оно прерывается сигналом SIGKILL. Укажите значение в секундах без единиц измерения (например, 150 ), значение интервала (например, 2min 30s ) или значение infinity , которое отключает время ожидания. По умолчанию TimeoutStopSec принимает значение DefaultTimeoutStopSec в файле конфигурации диспетчера (systemd-system.conf, system.conf.d, systemd-user.conf, user.conf.d). В большинстве дистрибутивов по умолчанию устанавливается время ожидания 90 секунд.

Некоторые значения (например, строки подключения SQL) необходимо экранировать, чтобы поставщики конфигурации могли считать переменные среды. Используйте следующую команду, чтобы создать правильно экранированное значение для файла конфигурации:

Разделители-двоеточия ( : ) не поддерживаются в именах переменных среды. Следует использовать двойной знак подчеркивания ( __ ) вместо двоеточия. Поставщик конфигурации переменных среды преобразует двойные символы подчеркивания в двоеточия, когда переменные среды считываются в конфигурации. В следующем примере ключ строки подключения ConnectionStrings:DefaultConnection задается в файле определения службы как ConnectionStrings__DefaultConnection .

Разделители-двоеточия ( : ) не поддерживаются в именах переменных среды. Следует использовать двойной знак подчеркивания ( __ ) вместо двоеточия. Поставщик конфигурации переменных среды преобразует двойные символы подчеркивания в двоеточия, когда переменные среды считываются в конфигурации. В следующем примере ключ строки подключения ConnectionStrings:DefaultConnection задается в файле определения службы как ConnectionStrings__DefaultConnection .

Сохраните файл и включите службу.

Запустите службу и убедитесь, что она работает.

Теперь, когда обратный прокси-сервер настроен и Kestrel управляется через systemd, веб-приложение можно считать полностью настроенным и оно доступно через http://localhost в браузере на локальном компьютере. Заголовок ответа Server показывает, что приложение ASP.NET Core обслуживается Kestrel.

Просмотр журналов

Так как веб-приложение, использующее Kestrel, управляется с помощью systemd, все события и процессы регистрируются в централизованном журнале. Но этот журнал содержит все записи обо всех службах и процессах, управляемых systemd. Чтобы просмотреть элементы, связанные с kestrel-helloapp.service , используйте следующую команду.

Читайте также:  Отключение metro windows 10

Чтобы отфильтровать элементы по времени, укажите в команде параметры времени. Например, —since today позволяет отфильтровать данные за текущий день, а —until 1 hour ago — просмотреть записи за предыдущий час. Дополнительные сведения см. на странице руководства о команде journalctl.

Защита данных

Стек защиты данных в ASP.NET Core используется определенным ПО промежуточного слоя ASP.NET Core, включая промежуточное ПО для проверки подлинности (например, промежуточное ПО файлов cookie) и средствами защиты от подделки межсайтовых запросов. Даже если API-интерфейсы защиты данных не вызываются из пользовательского кода, необходимо настроить защиту данных для создания постоянного хранилища криптографических ключей. Если защита данных не настроена, ключи хранятся в памяти и удаляются при перезапуске приложения.

Если набор ключей хранится в памяти, при перезапуске приложения происходит следующее:

  • Все токены аутентификации, использующие файлы cookie, становятся недействительными.
  • При выполнении следующего запроса пользователю требуется выполнить вход снова.
  • Все данные, защищенные с помощью набора ключей, больше не могут быть расшифрованы. Это могут быть токены CSRF и файлы cookie временных данных ASP.NET Core MVC.

Сведения о настройке защиты данных для хранения и шифрования набора ключей см. в приведенных ниже статьях.

Защита приложения

Настройка брандмауэра

Firewalld — это динамическая управляющая программа брандмауэра, которая поддерживает зоны сети. Фильтрацию портов и пакетов можно по-прежнему осуществлять через iptables. Firewalld обычно устанавливается в системе по умолчанию. yum позволяет установить этот пакет или убедиться, что он установлен.

С помощью firewalld вы можете открыть только те порты, которые необходимые для работы приложения. В этом случае используются порты 80 и 443. Следующие команды назначают порты 80 и 443 постоянно открытыми.

Обновите параметры брандмауэра. Проверьте, что доступные службы и порты находятся в зоне по умолчанию. Эти параметры можно просмотреть с помощью firewall-cmd -h .

Конфигурация HTTPS

Настройка приложения для безопасных (HTTPS) локальных подключений

Команда dotnet run использует файл приложения Properties/launchSettings.json, который настраивает приложение для прослушивания URL-адресов, заданных свойством applicationUrl (например, https://localhost:5001;http://localhost:5000 ).

Настройте приложение для использования при разработке сертификата для команды dotnet run или среды разработки (F5 или CTRL + F5 в Visual Studio Code), используя один из следующих подходов.

Настройка обратного прокси-сервера для безопасного подключения клиентов (HTTPS)

Конфигурация безопасности в этом разделе представляет собой общую конфигурацию, которая будет использоваться в качестве отправной точки для дальнейшей настройки. Мы не можем обеспечить поддержку инструментов, серверов и операционных систем сторонних производителей. Ответственность за использование конфигурации в этом разделе лежит на пользователе. Дополнительные сведения см. в следующих ресурсах:

Apache для HTTPS настраивается с помощью модуля mod_ssl. При установке модуля httpd автоматически добавляется и модуль mod_ssl. Если он по каким-то причинам отсутствует, добавьте его в систему с помощью yum .

Чтобы принудительно использовать HTTPS, установите модуль mod_rewrite для перезаписи URL-адресов:

Измените файл helloapp.conf, чтобы разрешить безопасный обмен данными через порт 443.

В следующем примере не выполняется настройка сервера для перенаправления небезопасных запросов. Рекомендуется использовать ПО промежуточного слоя перенаправления HTTPS. Для получения дополнительной информации см. Принудительное применение HTTPS в ASP.NET Core.

Для сред разработки, в которых безопасное перенаправление обрабатывается конфигурацией сервера, а не ПО промежуточного слоя перенаправления HTTPS, рекомендуется использовать временные перенаправления (302), а не постоянные перенаправления (301). Кэширование ссылок может привести к нестабильной работе в средах разработки.

При добавлении заголовка Strict-Transport-Security (HSTS) все последующие запросы клиента будут проходить по протоколу HTTPS. Рекомендации по настройке заголовка Strict-Transport-Security см. в разделе Принудительное применение HTTPS в ASP.NET Core.

В этом примере используется локально созданный сертификат. В SSLCertificateFile должен быть указан основной файл сертификата для доменного имени. В SSLCertificateKeyFile должен быть указан файл ключа, сформированный при создании CSR. В SSLCertificateChainFile должен быть указан файл промежуточного сертификата (если он существует), предоставленный центром сертификации.

Для работы с веб-сервером TLS 1.3 с OpenSSL 1.1.1 требуется сервер Apache HTTP Apache 2.4.43 или более поздней версии.

В предыдущем примере ассоциация протокола OCSP отключена. Дополнительные сведения и рекомендации по включению OCSP см. в разделе об ассоциации OCSP (документация по Apache).

Сохраните файл и протестируйте конфигурацию.

Дополнительные предложения Apache

Перезапуск приложений после обновления общей платформы

После обновления общей платформы на сервере перезапустите размещенные на нем приложения ASP.NET Core.

Дополнительные заголовки

Для защиты от вредоносных атак следует изменить или добавить несколько заголовков. Убедитесь, что модуль mod_headers установлен.

Защита Apache от атак кликджекинга

Кликджекинг (или атака с подменой пользовательского интерфейса) является вредоносной атакой, при которой посетителя сайта обманным путем вынуждают щелкнуть ссылку или нажать кнопку не той страницы, на которой он находится. Используйте X-FRAME-OPTIONS для защиты сайта.

Чтобы уменьшить риск атак кликджекинга, выполните указанные ниже действия.

Измените файл httpd.conf.

Добавьте строку Header append X-FRAME-OPTIONS «SAMEORIGIN» .

Сканирование типа MIME

Заголовок X-Content-Type-Options защищает Internet Explorer от сканирования MIME (определения Content-Type для файла по его содержимому). Если сервер задает заголовок Content-Type со значением text/html , и при этом установлен параметр nosniff , Internet Explorer отображает содержимое как text/html независимо от содержимого файла.

Измените файл httpd.conf.

Добавьте строку Header set X-Content-Type-Options «nosniff» . Сохраните файл. Перезапустите Apache.

Балансировка нагрузки

В этом примере показано, как установить и настроить Apache в CentOS 7 и Kestrel на одном компьютере. Чтобы устранить единую точку отказа, воспользуйтесь mod_proxy_balancer и измените значение VirtualHost для управления несколькими экземплярами веб-приложений за прокси-сервером Apache.

В представленном ниже файле конфигурации настроен дополнительный экземпляр helloapp , работающий на порте 5001. В разделе Proxy настраивается конфигурация подсистемы балансировки нагрузки с двумя членами для распределения нагрузки методом byrequests.

Ограничения скорости

С помощью элемента mod_ratelimit, который входит в модуль httpd, можно ограничить пропускную способность для клиентов:

В примере файла пропускная способность составляет 600 Кбит/с в корневой папке.

Длинные поля заголовка запроса

Параметры прокси-сервера по умолчанию обычно ограничивают длину полей заголовка запроса значением 8190 байт. Приложению могут потребоваться более длинные поля (например, приложениям, использующим Azure Active Directory). В этом случае требуется скорректировать директиву LimitRequestFieldSize для прокси-сервера. Применяемое значение зависит от конкретного сценария. Дополнительные сведения см. в документации сервера.

Не увеличивайте значение LimitRequestFieldSize по умолчанию, если это не требуется. Увеличение значения повышает риск переполнения буфера и атак типа «отказ в обслуживании» (DoS) со стороны злоумышленников.

Источник

Оцените статью