Qual é a melhor maneira de detectar se uma solicitação recebida é segura?

2

Existe um método preferencial de detecção de HTTP vs. HTTPS em uma solicitação recebida para um balanceador de carga F5? Estamos tentando detectar seguro versus não seguro com uma iRule e passar uma sinalização de cabeçalho correspondente aos meus servidores da Web.

Aqui está o que temos até agora (não testado):

when HTTP_REQUEST_SEND {
   clientside {
      if {[TCP::local_port] == 443} {
         HTTP::header replace HTTP_X_FORWARDED_PROTO "https"
      }
      else {
         HTTP::header replace HTTP_X_FORWARDED_PROTO "http"
      }
   }
}

Como você pode ver, estamos usando if {[TCP::local_port] == 443} { ... } para detectar o SSL, mas ele parece desajeitado com a porta codificada na regra. Existe uma maneira melhor?

Talvez inspecionando: SSL::mode , HTTP:uri ou outra coisa?

    
por Derek Hunziker 06.06.2012 / 19:30

1 resposta

1

O que você deseja detectar é se a conexão está usando um perfil SSL do cliente. A página do DevCentral para PROFILE :: exists mostra como fazer isso:

when CLIENT_ACCEPTED {
   if { [PROFILE::exists clientssl] == 1} {
      log local0. "client SSL profile enabled on virtual server"
   }
}

Oliver

    
por 07.06.2012 / 10:12