Назад | Перейти на главную страницу

Есть ли какая-либо система или служба DNS, поддерживающая HTTPS?

В основном мне нужно, чтобы DNS отвечал разными CNAMES в зависимости от того, был ли запрос сделан для HTTPS или объекта HTTP.

s.test.com -> IF(https) RESPONSE special.domain.com ELSE simple.domain.com

Является ли это возможным? Какие еще возможные способы сделать это?

Нет.

DNS не поддерживает HTTP или HTTPS.

Сравните это с тем, чтобы спросить у секретаря номер телефона (IP-адрес) для кого-то. Вы получите тот же ответ, что бы вы ни хотели спросить у собеседника.

Это невозможно с DNS. Запрос DNS полностью не зависит от причина по запросу.

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

Что ты пытаешься сделать? Возможно, есть лучший способ решить вашу настоящую проблему.

Как все уже упоминали, вы не можете сделать это с DNS. Я думаю, что это обычно делается с перенаправлением URL-адресов. Например, если вы используете Apache в качестве веб-сервера, вы можете настроить правила перенаправления с помощью mod_rewrite. Затем вы можете написать такие правила, как:

# If HTTPS redirect to special.domain.com
RewriteCond %{HTTPS} =on
RewriteRule .* https://special.domain.com%{REQUEST_URI} [R,L]

# If not HTTPS redirct to simple.domain.com
RewriteCond %{HTTPS} !=on
RewriteRule .* http://simple.domain.com%{REQUEST_URI} [R,L]

Вот еще несколько примеров: http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html

Я полагаю, что сомневаюсь, что:

  • Ты знаком с модель OSIи тот факт, что DNS, HTTPS и HTTP являются протоколами уровня приложений.
  • Вы понимаете, что протоколы должны быть независимыми (как между уровнями, так и внутри слоев), чтобы быть полезными.

Поэтому я считаю, что ваш вопрос означает, что вам интересно, есть ли в DNS аналог HTTP / HTTPS для записи ресурса (RR) MX (почтовый обмен) среди типы записей ресурсов, поддерживаемые DNS.

Похоже, что это цель Тип записи SRV (служебная), описанный в RFC 2782. хотя похоже, что услуги LDAP, SIP и XMPP чаще всего рекламируются через DNS.

Причина этого, по-видимому, историческая: записи SRV были предложены, реализованы и развернуты только после того, как HTTP был предложен, разработан и развернут. Для некоторого обсуждения того, почему на данном этапе не рекомендуется использовать записи SRV для рекламы HTTP / HTTPS, см. этот вопрос.

Нет, DNS не знает (или не заботится), какой протокол запрашивает поиск.

Я ничего не знаю, но если у вас есть контроль над веб-сервером на другом конце, вы можете перенаправить на другой домен (или иметь другой виртуальный хост) в зависимости от того, использует ли он ssl или нет.

Как уже упоминалось, базовый DNS этого не делает. Однако, если вы контролируете клиента (т.е. это программное обеспечение, которое вы кодируете и распространяете), вы можете использовать записи SRV:

http://en.wikipedia.org/wiki/SRV_record

Поэтому, если вам нужен один ответ для HTTP, а другой для HTTPS, вы должны поместить что-то вроде следующего в свою запись зоны DNS:

_https._tcp.s.test.com. 86400 IN SRV 0 5 443 special.domain.com.
_http._tcp.s.test.com.  86400 IN SRV 0 5 80  simple.domain.com.

Таким образом, DNS-клиент, который ищет службу https / tcp для записи "s.test.com", получает ответ, в котором говорится, что служба находится на хосте special.domain.com, порт 443. DNS-клиент, который запрашивает http / tcp для "s.test.com" возвращает ответ, в котором говорится, что host simple.domain.com, порт 80.

«0 5» - это приоритеты / предпочтения, так что вы можете выполнять циклический перебор, если у вас есть несколько хостов для одной и той же службы (special1, special2, ...; simpleA, simpleB и т. Д.).

Большинство программ (например, веб-браузеров) не ищут записи SRV, только записи A.

Поскольку вы указываете в своем вопросе тег балансировки нагрузки, я должен упомянуть, что балансировка нагрузки по портам (http - 80, https - 443) - это самое простое, что вы можете сделать.

Более того, вы можете добавить еще один уровень балансировки нагрузки по виртуальному хосту (http) или SNI (https).

В остальном на этот вопрос уже есть четкий ответ.

Нет. Как уже упоминалось, это не ответственность сервера имен.

Однако вы можете изменить свое приложение, чтобы оно обнаруживало протокол (HTTP или HTTP) и соответственно предоставляло его ссылки.

Вот пример. Допустим, у вас есть веб-страница, на которой отображается несколько изображений. Вы можете связать эти изображения с вашим HTTP CDN, когда страница просматривается с помощью HTTP, и вы можете захотеть, чтобы страница использовала ваш HTTP CDN, когда доступ к странице осуществляется с помощью HTTP. Используйте динамическое веб-приложение, чтобы проверить протокол и соответствующим образом заменить все ссылки.