Existe algum sistema DNS ou Serviço que esteja ciente de HTTPS?

6

Basicamente, eu preciso que o DNS responda com diferentes CNAMES dependendo se a solicitação foi feita para o objeto HTTPS ou HTTP.

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

É possível? Que outras maneiras possíveis de fazer isso?

    
por Jim 17.01.2013 / 14:22

9 respostas

26

Isso não é possível com o DNS. A solicitação de DNS é completamente independente da razão para a solicitação.

Para que isso seja possível, todo o sistema de cache do DNS teria que ser descartado. O DNS também teria que ser reescrito toda vez que um novo esquema fosse inventado.

O que você está tentando fazer? Pode haver uma maneira melhor de resolver seu problema real.

    
por 17.01.2013 / 14:25
43

Não.

O DNS não está ciente de HTTP ou HTTPS.

Compare-o a pedir para o secretário o número de telefone (número IP) de alguém. Você receberá a mesma resposta, não importa o que você queria perguntar à pessoa do outro lado.

    
por 17.01.2013 / 14:27
11

Como todos mencionaram, você não pode fazer isso com o DNS. Eu acho que isso geralmente é feito com redirecionamentos de URL. Por exemplo, se você estiver usando o Apache como seu servidor da Web, poderá configurar as regras de redirecionamento com o mod_rewrite. Então você pode escrever regras como:

# 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]

Aqui estão mais alguns exemplos: link

    
por 17.01.2013 / 14:50
7

Eu vou te dar o benefício da dúvida e assumir que:

  • Você conhece o o modelo OSI e o fato de que o DNS, HTTPS e HTTP são todos os protocolos em nível de aplicativo.
  • Você entende que os protocolos devem ser independentes (entre camadas e dentro de camadas) para serem úteis.

Por isso, levo a sua pergunta para indicar que você está se perguntando se existe um análogo HTTP / HTTPS no DNS para o registro de recurso MX (troca de mensagens) (RR) entre os tipos de registro de recurso suportados pelo DNS .

Este parece ser o objetivo do tipo de registro SRV (serviço) , descrito em RFC 2782 . embora pareça que os serviços LDAP, SIP e XMPP são mais comumente anunciados dessa maneira via DNS.

A razão para isso parece ser histórica: os registros SRV foram propostos, implementados e implantados somente depois que o HTTP foi proposto, desenvolvido e implantado. Para algumas discussões sobre por que talvez não seja uma boa ideia usar registros SRV para anunciar HTTP / HTTPS neste momento, consulte esta pergunta.

    
por 17.01.2013 / 18:56
5

Não, o DNS não sabe (ou se importa) qual protocolo está solicitando a pesquisa.

    
por 17.01.2013 / 14:25
3

Eu não sei de nenhum, mas se você tiver o controle do servidor web no outro lado, você pode redirecionar para um domínio diferente (ou ter um vhost diferente) dependendo se ele está usando ssl ou não. / p>     

por 17.01.2013 / 14:25
2

Como já mencionado, o DNS básico não faz isso. No entanto, se você controlar o cliente (ou seja, o software que você codifica e distribui), poderá usar registros SRV:

link

Então, se você quiser uma resposta para HTTP e outra para HTTPS, coloque algo como o seguinte em seu registro de zona 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.

Assim, um cliente DNS que procura o serviço https / tcp para o registro "s.test.com" recebe uma resposta dizendo que o serviço está no host special.domain.com, porta 443. Um cliente DNS que solicita para http / tcp para "s.test.com" recebe de volta uma resposta dizendo host simple.domain.com, porta 80.

O "0 5" são prioridades / preferências para que você possa executar o round-robin se tiver vários hosts para o mesmo serviço (special1, special2, ...; simpleA, simpleB, etc.).

A maioria dos softwares (por exemplo, navegadores da web) não consultam os registros SRV, somente registros A.

    
por 05.02.2013 / 21:13
0

Como você colocou a tag de balanceamento de carga em sua pergunta, devo mencionar que o balanceamento de carga por porta (http é 80 e https é 443) é a coisa mais fácil que você pode fazer.

Além disso, você pode adicionar outro nível de balanceamento de carga por virtualhost (http) ou SNI (https).

Além disso, esta questão já está bem respondida.

    
por 17.01.2013 / 19:56
0

Não. Como outros já mencionaram, isso não é responsabilidade do servidor de nomes.

No entanto, você pode modificar seu aplicativo para detectar o protocolo (HTTP ou HTTPs) e fornecer seus links de acordo.

Aqui está um exemplo. Digamos que você tenha uma página da Web que exiba várias imagens. Você pode querer vincular essas imagens ao CDN dos seus HTTPs quando a Página é visualizada usando HTTPs e você pode querer que a página use seu CDN HTTP quando a página é acessada usando HTTP. Use um aplicativo da web dinâmico para verificar o protocolo e substituir todos os links de acordo.

    
por 18.01.2013 / 05:01