Apache HTTP Fallback, wenn der SSL-Handshake fehlschlägt

Apache HTTP Fallback, wenn der SSL-Handshake fehlschlägt

Ich habe einsehrspezifischer Anwendungsfall. Ich möchte mithilfe eines Apache prüfen, ob der Browser eines Benutzers moderne CipherSuites verwenden kann.

Der Apache wird per https aufgerufen und soll versuchen eine SSL-Verbindung aufzubauen, falls das fehlschlägt, soll der Apache den Benutzer auf eine Fallback-HTTP-Seite umleiten und ihm dort mitteilen, dass sein Browser veraltet ist.

Natürlich muss ich mod_rewrite verwenden, das sogar eine https-Variable hat, die „on/off“ enthält, je nachdem, ob SSL eingerichtet ist. Aber wie kann ich Apache anweisen, fortzufahren, wenn der anfängliche SSL-Handshake fehlschlägt?

Antwort1

Der Client sollte versuchen, eine SSL-Verbindung herzustellen. Wenn dies fehlschlägt, sollte Apache den Benutzer auf eine Fallback-HTTP-Site umleiten, wo ihm mitgeteilt wird, dass sein Browser veraltet ist.

Ich glaube nicht, dass das möglich ist, da der TLS-Handshake in einem Stadium fehlschlagen würde, das lange vor dem Stadium liegt, in dem Client und Webserver HTTP-Protokollnachrichten austauschen können.

Stattdessen:

  1. Akzeptiere alle Chiffren.
  2. Und ordnen Sie sie von stark nach schwach mit demSSLCipherSuite ...Richtlinie.
  3. Erlauben Sie dem Client nicht, die Präferenz der Chiffre zu bestimmen, sondern verhandeln Sie sie in der Reihenfolge der Präferenz, die Sie in Schritt 2 festgelegt haben. mit demSSLHonorCipherOrder on Richtlinie.
  4. Dassollenführt zu einer Verbindung mit der stärksten Verschlüsselung, die der Client unterstützt. (Theoretisch kann die tatsächliche Leistung abweichen.)
  5. Wenn diese Chiffre unter Ihrem Schwellenwert liegt, wenden Sie die Logik an, um Ihre Sicherheitsmeldung anzuzeigen.
  6. Sichern Sie den Inhalt, der wirklich eine starke Verschlüsselung benötigt,im Handbuch erklärt

also etwas in der Art von:

# be liberal in general
SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
SSLHonorCipherOrder on

<Location "/strong/area">
# but https://hostname/strong/area/ and below
# requires strong ciphers
SSLCipherSuite HIGH:!aNULL:!MD5
</Location>

verwandte Informationen