Лучшие практики веб-сайта, защищенные SSL

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

Следующее - это то, что может вам помочь:

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

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