Передовые практики веб-сайтов с защитой SSL - PullRequest
11 голосов
/ 03 апреля 2009

У меня есть веб-сайт (www.mydomain.com), который защищен сертификатом SSL. Это веб-сайт ASP.NET, и я заставил определенные страницы с помощью кода требовать использования префикса https: //. Если они этого не сделают, он перенаправит их на эквивалентный https: //. Это хорошая практика? Есть ли более простой способ сделать это? Не каждая страница требует SSL.

Кроме того, когда пользователи используют мой URL в форме mydomain.com вместо www.mydomain.com, они получают ошибку сертификата, поскольку сертификат был зарегистрирован для www.mydomain.com. Должен ли я использовать тот же подход, что и в отношении проблем http: // и https: //, о которых я упоминал выше? Или есть лучший способ справиться с этим?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2009

Ваш подход звучит хорошо. В моем текущем проекте я использую HTTPS, когда пользователь заходит на мою страницу входа в систему (на основе флага конфигурации, который позволяет мне тестировать локально, не имея необходимости в сертификате). Это позволяет мне получить доступ к другим страницам без защиты, что удобно.

У меня есть пара мест, где наш сервер захватывает выходные данные других страниц (например, рендеринг в html в PDF и получение динамических изображений). Из-за нашей среды наш сервер не может разрешить его общедоступное имя, поэтому, если бы нам пришлось принудительно установить ssl на сайте, который мы должны добавить, наш внутренний IP-адрес (или подделать имя домена).

Что касается вашего второго вопроса, у вас есть два варианта работы с www.example.com vs example.com. Вы можете купить сертификат, который позволяет вам иметь несколько доменных имен. Они известны как сертификаты UCC.

Ваш второй вариант - перенаправить example.com на www.example.com или наоборот. Перенаправление - отличный вариант, если вы хотите, чтобы ваш контент был проиндексирован Google или другими поисковыми системами. Так как они будут видеть www.example.com и example.com как два отдельных сайта. Это означает, что ссылки на ваши сайты будут разделены, что приведет к снижению общего рейтинга страницы.

1 голос
/ 03 апреля 2009

Вы можете настроить сайты в IIS так, чтобы они требовали сертификат, но при этом A) выдает ошибку, если кто-то не посещает с https и B) требует, чтобы все страницы использовали https. Итак, , что не будет работать. Вы можете установить фильтр на IIS, который проверяет все запросы и перенаправляет их как вызовы https, если они есть в вашем списке шифрования. Очевидным недостатком здесь является необходимость обновления списка страниц при каждом добавлении новой страницы (например, из файла XML или базы данных) и перезапуск фильтра.

Я думаю, что вы, вероятно, правы при встраивании кода в страницы, для которых требуется https, который перенаправляет на версию https, если они приходят через http. Что касается вашей ошибки сертификата, вы можете перенаправить с полным путем (включая www) вместо относительного пути для решения этой проблемы. Если у вас есть какие-либо вопросы о том, как определить, использует ли вызов HTTPS ИЛИ как получить полный путь к текущему запросу, пожалуйста, дайте мне знать. Оба довольно просты, но у меня есть пример кода, если он вам нужен.

ОБНОВЛЕНИЕ - Джош, сертификаты, которые обрабатывают несколько поддоменов, называются сертификатами с подстановочными знаками. Проблема в том, что они немного дороже стандартных сертификатов.

ОБНОВЛЕНИЕ 2 : Еще одна вещь, которую следует учитывать, - это использовать мастер-страницу или производный класс для страниц, которым требуется SSL. Таким образом, вместо дублирования кода на каждой странице, вы можете просто объявить его как тип SSLPage (или использовать соответствующую главную страницу) и сделать так, чтобы класс Master / Parent обрабатывал перенаправление. Опять же, вам придется выполнить некоторую обработку URL, если вы воспользуетесь этим подходом, но это довольно тривиально.

0 голосов
/ 17 апреля 2016

Вам может помочь следующее:

  • Если все страницы вашего сайта можно отображать с помощью https: //, вы можете просто обновить свой код, чтобы использовать https: //, и установить две привязки в IIS. Один для http, а другой для https. Таким образом, ваш сайт может быть доступен через любой протокол.
  • Ваши посетители получают ошибку несоответствия имён, потому что общее имя, используемое в вашем SSL-сертификате, - www.mydomain.com. Namecheap предоставляет сертификаты RapidSSL, с помощью которых вы можете защитить оба имени в рамках одного SSL. Вы можете приобрести этот SSL для www.mydomain.com, и он автоматически защитит mydomain.com (т.е. без www).

Другой вариант - вы можете написать код для перенаправления ваших посетителей на сайт www.mydomain.com, даже если они просматривают mydomain.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...