Pergunta

Eu estou usando este código, para fazer um pedido para uma determinada URL:

private static string GetWebRequestContent(string url)
{
  string sid = String.Empty;

  HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
  req.KeepAlive = false;

  using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
  {
    using (StreamReader sr = new StreamReader(res.GetResponseStream()))
    {
      sid = sr.ReadToEnd().Trim();
    }
  }

  return sid;
}

Eu estou usando-o para testar a stickyness de uma carga de trabalho Balancer, com 3 servidores por trás dele. Todos eles têm um arquivo HTM estática chamada sid.htm, onde o servidor do Servidor ID está escrito.

Para URL de HTTP com isso funciona bem. Mas com HTTPS não funciona. Eu recebo esta exceção:

A solicitação foi anulada:. Não foi possível criar SSL / TLS canal seguro

No momento, tenho apenas 2 servidores atrás do WLB e um no seu próprio com um IP público por trás de um firewall. HTTPS solicitações funciona bem se eu acertar o servidor autônomo -. Mas quando eu bati o WLB eu recebo o erro acima

Uma coisa: Para alternar entre bater o único servidor, e o WLB eu uso o meu arquivo hosts. O DNS registra para o meu domínio aponta para o único servidor no momento. Então eu coloquei um registro no meu arquivo hosts para acertar o WLB. Isso não deve ser causando problemas ...

A minha pergunta : credenciais que SSL / certificados faz o uso HttpWebRequest? Se ele usa 40 bits DES ou 56 bits DES, que é a razão, porque aqueles são desativados no WLB. Mas esses certificados não foram utilizados em navegadores desde IE3 e Netscape 1 e 2.

Foi útil?

Solução

Ele funciona perfeitamente no meu navegador.

Eu encontrei a solução 1 minuto depois que eu postei a pergunta:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

E isso significa o HttpWebRequest estava usando TLS 1.0 - Eu não sei, mas eu supor que é de 40 bits DES ou 56 bits DES, que está desativado no WLB

.

Outras dicas

Não é smothing você pode querer considerar com o balanceador de carga. As que usamos para a frente o tráfego HTTPS segura aos servidores por trás dele em uma conexão HTTP inseguro. A conexão entre o balanceador de carga e o navegador ainda é seguro, mas não há nenhuma necessidade para a cabeça sobre o protocolo seguro entre o balanceador e os servidores web.

Nós queria para detectar uma conexão segura em nossos servidores da web, mas, inicialmente, nunca vi uma conexão HTTPS. Foi quando percebemos que o tráfego atrás do balanceador era inseguro. Fazia sentido, uma vez que sabia.

O que fazemos agora é para a frente todo o tráfego seguro entrando no balanceador (porta 443) para a porta 81 (altenative HTTP) e, em seguida, encaminhado todo o tráfego HTTP normal (portas 80 e 81) a porta 80. Em seguida, podemos verificar a porta no servidor web e saber 80 é inseguro e 81 é proteger o tráfego entre o navegador e balanceador apesar do fato de todos os seus HTTP no servidor web.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top