Domanda

Sto strappando i capelli a quello che dovrebbe essere un problema follemente semplice. Stiamo eseguendo WebSphere IHS (Apache) attraverso un BigIP F5. BigIP sta facendo la traduzione https per noi. Il nostro URL (modificato per il Web, non valido) è https://superniftyserver.com/lawson/portal .

Quando qualcuno digita proprio quello senza la barra dopo il portale, Apache assume "portale". essere un file e non una directory. Quando Apache scopre di cosa si tratta, invia il reindirizzamento permanente 301. Ma poiché Apache conosce solo http, invia l'URL come http://superniftyserver.com/lawson/portal/ che quindi crea problemi.

Quindi ho provato una modifica httpd.conf a livello di server per mod_rewrite, questa è una delle dozzine di combinazioni che ho provato.

RewriteEngine attivo RewriteRule ^ / lawson / portal (. *) / Lawson / portal / $ 1

Ho anche provato RewriteRule ^ / lawson / portal $ / lawson / portal /

Tra le altre cose ... Cosa mi sto perdendo?

È stato utile?

Soluzione

Se non riesci a ottenere una risposta sulla sintassi RewriteRule, ecco altre due opzioni per te: Scrivi un iRule personalizzato su BigIp (vedi F5 DevCentral ) che cerca 301 risposte e le converte in SSL; lascia passare l'URL nel tuo server WebSphere ed esegui un reindirizzamento programmatico che invia HTTPS. Tuttavia, poiché F5 termina la connessione SSL, è necessario impostare un'intestazione personalizzata che si configura (consultare PQ86347 ), quindi Java request.getScheme () funziona come ti aspetteresti.

Altri suggerimenti

fissi!

SOL6912: la configurazione di un profilo HTTP per riscrivere gli URL in modo che i reindirizzamenti da un server HTTP specifichino il protocollo HTTPS


Aggiornato: 8/7/07 12:00

Un server virtuale ClientSSL è in genere configurato per accettare connessioni HTTPS da un client, decrittografare la sessione SSL e inviare la richiesta HTTP non crittografata al server Web.

Quando un URI richiesto non include una barra finale (una barra diretta, come /, alla fine dell'URI), alcuni server Web generano un reindirizzamento di cortesia. Senza una barra finale, il server Web tratta innanzitutto la risorsa specificata nell'URI come un file. Se non è possibile trovare il file, il server Web può cercare una directory con lo stesso nome e, se trovato, inviare una risposta di reindirizzamento HTTP 302 al client con una barra finale. Il reindirizzamento verrà restituito al client in modalità HTTP anziché HTTPS, causando il fallimento della sessione SSL.

Di seguito è riportato un esempio di come una risposta di reindirizzamento HTTP 302 causa il fallimento della sessione SSL:

& # 183; Per richiedere una sessione SSL, un utente digita https://www.f5.com/stuff senza un barra finale.

& # 183; Il browser client invia una richiesta SSL al server virtuale ClientSSL, che risiede sul sistema LTM BIG-IP.

& # 183; Il sistema LTM BIG-IP decodifica quindi la richiesta e invia un comando GET / stuff al server Web.

& # 183; Poiché il file / stuff non esiste sul server Web, ma esiste una directory / stuff / virtual, il server Web invia una risposta di reindirizzamento HTTP 302 per la directory, ma aggiunge una barra finale alla risorsa. Quando il server Web invia la risposta di reindirizzamento HTTP 302, specifica HTTP (non HTTPS).

& # 183; Quando il client riceve la risposta di reindirizzamento HTTP 302, invia una nuova richiesta al server virtuale LTM BIG-IP che specifica HTTP (non HTTPS). Di conseguenza, la connessione SSL non riesce.

Configurazione di un profilo HTTP per riscrivere gli URL

In BIG-IP LTM versione 9.x è possibile configurare un profilo HTTP per riscrivere gli URL in modo che i reindirizzamenti da un server HTTP specifichino il protocollo HTTPS. Per fare ciò, eseguire la seguente procedura:

  1. Accedi all'utility di configurazione.

  2. Fai clic su Traffico locale.

  3. Fai clic su Profili.

  4. Fai clic sul pulsante Crea.

  5. Digitare un nome per il profilo.

  6. Scegli http dal menu a discesa Profilo principale.

  7. In Impostazioni, imposta Reindirizza riscrittura su Tutto, Corrispondenza o Nodi, a seconda della configurazione

Ad esempio:

o Scegli tutto per riscrivere eventuali reindirizzamenti HTTP 301, 302, 303, 305 o 307 su HTTPS

o Scegli Corrispondenza per riscrivere i reindirizzamenti quando il percorso e interroga i componenti URI della richiesta e il reindirizzamento sono identici (ad eccezione della barra finale)

o Scegliere Nodo per riscrivere i reindirizzamenti quando l'URI di reindirizzamento contiene un indirizzo IP del nodo anziché un nome host e si desidera che il sistema lo cambi nell'indirizzo del server virtuale

  1. Fai clic su Fine.

Ora è necessario associare il nuovo profilo HTTP al server virtuale ClientSSL.

Prova questo:

# Trailing slash problem
RewriteCond    %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule    ^(.+[^/])$           https://<t:sitename/>$1/ [redirect,last]
LoadModule rewrite_module                modules/mod_rewrite.so

assicurati che la linea sia da qualche parte nel tuo file httpd.conf

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top