NetScaler HTTP zu HTTPS Umleitung mit Responder Policies für mehrere Domains

Im Artikel „NetScaler Content-Switching für HTTP zu HTTPS Umleitung für mehrere Domains“ habe ich eine Variante der HTTP zu HTTPS Umleitung mittels Content Switching (CS) beschrieben. Mein Kollege Claudio Mascaro hat das Ganze nun ein wenig eleganter mittels einer Responder Policy gelöst :-)

Dafür benötigt man als ersten einen HTTP Loadbalancing (LB) vServer, welcher permanent „ON“ ist und welcher die gleiche IP wie der HTTPS CS vServer aufweist (z.B. 192.168.200.10):

add server PITDUMMY 192.168.199.199
add service svc-HTTPtoHTTPS PITDUMMY HTTP 80 -healthMonitor NO
bind service svc-HTTPtoHTTPS -monitorName tcp -monState DISABLED
add lb vserver lb-vsrv-http.domain.pit HTTP 192.168.200.10 80
bind lb vserver lb-vsrv-http.domain.pit svc-HTTPtoHTTPS

Um den Service permanent „ON“ zu schalten wurde das Monitoring mit den Parametern deaktiviert:
-healthMonitor NO
bind service HTTPtoHTTPS -monitorName tcp -monStateDISABLED

Nun benötigt man noch eine Responder Policy welche die Anfrage von HTTP zu HTTPS umleitet:

add responder action rs_act_httptohttps redirect "\"https://\" + HTTP.REQ.HOSTNAME.HTTP_URL_SAFE + HTTP.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE" -responseStatusCode 302
add responder policy rs_pol_httptohttps "!CLIENT.SSL.IS_SSL" rs_act_httptohttps

Zu guter Letzt muss diese Policy nun noch dem vorher erstellten LB vServer zugewiesen werden:

bind lb vserver lb-vsrv-http.domain.pit -policyName rs_pol_httptohttps -priority 100 -gotoPriorityExpression END -type REQUEST

Ab jetzt wird jede HTTP Anfrage an die IP 192.168.200.10 nach HTTPS umgeleitet. Somit ist der Weg frei um beim HTTPS CS vServer jederzeit neue Policies hinzuzufügen, ohne sich noch Gedanken über eine Umleitung machen zu müssen.

Ein spezieller Dank geht hier an unseren Master CCI Claudio Mascaro, welcher dies auf unserem System entsprechend eleganter als meine Lösung eingerichtet hat :-)

Skript: NS-HTTP2HTTPS-Responder