Переадресация. Если сайт может открыть https то откроет а если не может то останется на http. Как это можно сделать?
Есть идея сделать так:
У сайта есть ssl сертификат (он поддерживает https протокол)
Допустим, если зайти через браузер который поддерживает https протокол на сайт через http, то должна сработать переадресация на протокол https.
А если зайти через старый браузер (который не поддерживает https протокол) на сайт через http, то переадресация не будет работать и оставит пользователя на сайте.
Но при этом на https будет один сайт, а на http другой (это нужно для полноценной работы сайта на старом браузере, который не поддерживает https.
Я пересмотрел почти весь интернет и ничего дельного не смог найти.
"Я пересмотрел почти весь интернет и ничего дельного не смог найти. "
Потому что не понимаешь как работает ssl. Сайт у него открывает https, браузер поддерживают https...
Всё ровно наоборот - сертификат "поддерживает" браузер. И браузер же открывает сайты.
А теперь внимание!: сервер отдаст тот протокол который будет запрошен браузером.
А как тогда работает сайт Google на браузерах, которые вообще ничего не знают про https?
И при этом на браузере который поддерживает https идет переадресация с http на https.
Поставь перед сайтом прокси nginx, напиши map для старого браузера, и в правиле редиректа добавь условие для этого map.
# Определяем, нужно ли делать редирект для определенных user-agent
map $http_user_agent $redirect_to_https {
default 1; # По умолчанию редирект на HTTPS
"~*название_браузера/версия" 0; # Для конкретной версии браузера не делать редирект
}
server {
listen 80;
server_name example.com;
# Условие для редиректа на HTTPS
if ($redirect_to_https) {
return 301 https://$host$request_uri;
}
# Остальные настройки для HTTP
# Например, обработка запросов без редиректа
}
Никак. Это открытая дверь на атаку на понижение (описание есть скажем тут https://www.ssldragon.com/ru/blog/what-is-downgrad... ), причем сразу наглухо. Плюс, найдите сейчас браузер, который не умеет в HTTPS. Разве что вы пилите какое-то легаси а-ля windows 95 update, под четвертый ИЕ, но здесь проще - не настраивайте HTTPS вообще, так как ваши клиенты это как раз те, кто HTTPS не умеет.
Например, iPad2, десять лет не получавший обновлений, не имеет корневых сертификатов, чтобы проверить предложенные. А в остальном - работает нормально, насколько это сейчас вообще возможно с полугигом памяти. И в HTTPS умеет, но толку-то.
Adamos, по такой причине даунгрейдить HTTPS тоже нет смысла, проще серт-бандл залить и установить. Другое дело что это apple, его рутовать надо для такой операции. Ну и почитать, а умеет ли он хотя бы TLS1.0, потому как если нет, то ваш HTTPS будет дырявым, и проще реально сразу HTTP настраивать без всяких шаманств.