Я хочу использовать HTTPS в своем веб-приложении ASP.NET, но только для страницы Login.aspx.
Как это можно сделать?
Я хочу использовать HTTPS в своем веб-приложении ASP.NET, но только для страницы Login.aspx.
Как это можно сделать?
Сначала получите или создайте сертификат
Получить модуль SecureWebPageModule из http://www.codeproject.com/Articles/7206/Switching-Between-HTTP-and-HTTPS-Automatically-Ver. Инструкции по настройке можно найти в статье.
Добавить тег secureWebPages в web.config
<configuration>
...
<secureWebPages enabled="true">
...
</secureWebPages>
...
<system.web>
...
</system.web>
</configuration>
Добавьте файлы и каталоги, которые будут использоваться для протокола https:
<secureWebPages enabled="true">
<file path="Login.aspx" />
<file path="Admin/Calendar.aspx" ignore="True" />
<file path="Members/Users.aspx" />
<directory path="Admin" />
<directory path="Members/Secure" />
</secureWebPages>
Надеюсь, это поможет!
Вы можете опубликовать собственный сертификат или приобрести его. Суть в том, что покупка в зависимости от компании означает, что она уже хранится в хранилище сертификатов для большинства браузеров. Самостоятельно опубликованное вами не будет, и ваши пользователи должны будут выполнить дополнительный шаг по установке вашего сертификата.
Вы не скажете, какую версию IIS вы используете, но вот несколько подробных инструкций для IIS 6
Вы можете приобрести относительно дешевые сертификаты, или вы можете пойти с большими мальчиками (verisign) и получить расширенный сертификат валидации, который превращает вашу адресную строку в IE, зеленый. Это также довольно строгий процесс проверки и требует времени.
Если вы знаете всех пользователей, которые будут попадать на ваш сайт, нет проблем с установкой ваших собственных. Однако для открытого веб-сайта с анонимными пользователями (который вы не знаете), вероятно, лучше всего приобрести тот, который уже находится в большинстве основных браузеров, хранилища сертификатов.
Вы можете включить SSL через IIS и потребовать его только для своей страницы login.aspx, а не для остальных.
После того, как вы установили/установили SSL, вы хотите сделать какую-то переадресацию на странице входа в https://. Затем любую страницу, на которую отправляется пользователь после проверки, может просто быть http://.
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
If Request.IsSecureConnection = False And _
Not Request.Url.Host.Contains("localhost") Then
Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"))
End If
End Sub
Это может быть проще реализовать на главной странице или только на всех страницах, для которых требуется https. Проверяя "localhost", вы избегаете получения ошибки в тестовой среде (если у вашего тестового сервера нет другого имени, чем проверка на это: "mytestservername" ).
отказ от ответственности - я был вовлечен в разработку этого проекта
Я бы рекомендовал использовать http://nuget.org/packages/SecurePages/. Он дает вам возможность защищать определенные страницы или использовать Regex для определения совпадений. Он также заставит все страницы не соответствовать Regex или напрямую указанному HTTP.
Вы можете установить его через NuGet: Install-Package SecurePages
Документы находятся здесь: https://github.com/webadvanced/Secure-Page-manager-for-asp.net#secure-pages
Простое использование:
SecurePagesConfiguration.Urls.AddUrl("/cart");
или
SecurePagesConfiguration.Urls.AddRegex(@"(.*)account", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
Вы можете включить HTTPS в конфигурацию IIS, но он не будет "безопасным", если вы не приобретете SSL-сертификат и не подключите его к IIS. Убедитесь, что вы открываете порт 443.
Можем ли мы сделать то же самое с помощью простой записи cname в вашей панели управления DNS?
Домен входа в Cname: *.example.com Пункт назначения: https://www.example.com TLL: 3600