Zum erzwingen von HTTPS auf ein Verzeichnis UND die Kraft, die HTTPS-Authentifizierung

Frage ich mich, was der beste Weg, um zu erzwingen, HTTPS-Authentifizierung.

Wenn ich dieses in meine .htaccess-Datei:

AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david

Authentifizierung funktioniert, aber die Authentifizierung über port 80 senden Sie das Kennwort im Klartext.

So, ich dachte, ich würde hinzufügen einer Redirect-Regel umleiten, alle nicht-HTTPS-Anfragen auf HTTPS-Anforderungen entspricht:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteBase /~david/
RewriteRule ^(.*)$ https://myserver.tld/~david/$1 [R,L]

Diese auch funktioniert, aber die ersten authenicates auf port 80 leitet dann, dann authenicates wieder auf port 443. Ich will NICHT zur Authentifizierung auf port 80, da das Kennwort wird in Klartext gesendet. Ich habe nicht in der Lage gewesen, um herauszufinden, eine gute Möglichkeit zum umleiten sofort auf HTTPS und dann authenicate.

Nur so konnte ich herausfinden, wie man dies zu tun ist, dies zu tun:

AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david
ErrorDocument 403 /403.php
SSLRequireSSL

Werden und eine 403.php PHP-Skript auf die /meine server:

<?php

header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);

?>

Ist dies das gewünschte Verhalten. Es erfordert SSL, so dass, wenn Sie versuchen, Zugriff auf das Verzeichnis auf port 80, es spuckt einen benutzerdefinierten Fehler-Dokuments, und das Dokument leitet die Seite auf HTTPS.

Scheint dies ein Schlamassel. Gibt es einen besseren Weg, dies zu erreichen?

  • Ich glaube, du hast Recht. Das ist der beste Weg.
InformationsquelleAutor David Barnes | 2010-12-22
Schreibe einen Kommentar