
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:
- Akzeptiere alle Chiffren.
- Und ordnen Sie sie von stark nach schwach mit dem
SSLCipherSuite ...
Richtlinie. - 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 dem
SSLHonorCipherOrder on
Richtlinie. - Dassollenführt zu einer Verbindung mit der stärksten Verschlüsselung, die der Client unterstützt. (Theoretisch kann die tatsächliche Leistung abweichen.)
- Wenn diese Chiffre unter Ihrem Schwellenwert liegt, wenden Sie die Logik an, um Ihre Sicherheitsmeldung anzuzeigen.
- 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>