Wie kann ich einfach dafür sorgen, dass die gesamte Site eine sichere Verbindung verwendet? [geschlossen]

18

In Drupal 7 habe ich das Secure Login- Modul verwendet, um die Site über eine sichere Verbindung auszuführen, aber es scheint, als würde sie beim Abmelden nicht auf http zurückgesetzt. Zur Vereinfachung möchte ich die gesamte Site einfach als https: // ausführen.

Gibt es eine einfache Möglichkeit, dies ohne die Verwendung eines Moduls zu tun?

Paul Connolly
quelle
Heute habe ich gerade das Htaccess-Modul installiert , die vorhandenen Einstellungen geändert und dieses Profil bereitgestellt. Scheint perfekt zu funktionieren ...
Aleksey Zubenko

Antworten:

35

Wenn Sie alle Ihre Seiten umleiten möchten, um zur Verwendung von SSL gezwungen zu werden, fügen Sie dies zu Ihrer .htaccessDatei hinzu.

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Dies sollte direkt RewriteEngine on nachgestellt werden, wenn Sie noch keine Änderungen vorgenommen haben.

Rick
quelle
1

Ein weiterer praktischer Trick, wenn Sie Root-Zugriff auf Apache haben, um Ihre vhost-Direktiven zu ändern, ist das Hinzufügen dieser zu der SSL-Direktive für die Site. Die meisten modernen Browser befolgen diese Richtlinie (IE9 nicht)

Header always set Strict-Transport-Security "max-age=63072000"

Sie können das Alter nach Belieben einstellen. Das bedeutet, dass Webbrowser, die dies tun, NUR SSL verwenden, um mit Ihrer Website zu kommunizieren, und niemals HTTP. Dies gibt ein wenig Sicherheit bei der gesamten HTTP / HTTPS-Switching-Situation.

Es ist ein praktischer Hack.

HINWEIS: Dies funktioniert nur, wenn Sie ein GÜLTIGES SSL-Zertifikat (nicht selbstsigniert, abgelaufen oder auf andere Weise falsch) auf Ihrer Site haben. Wenn Sie dies nicht tun, wird der Browser daran gehindert, eine Verbindung herzustellen, bis die Höchstdauer abgelaufen ist.

Brady
quelle
0

Möglicherweise möchten Sie es mit einer anderen Option versuchen: Ich benötigte sie für eine meiner Installationen und benötigte keine zusätzlichen Module:

Zunächst in Ihrem .htaccess:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^www\.yourdomainhere\.com*
RewriteRule ^(.*)$ https://www.yourdomainhere.com/ [L,R=301]

Dies sollte hinzugefügt werden nach:

RewriteEngine on

Dann in deiner settings.php:

$base_url = 'https://www.yourdomainhere.com'; 

Möglicherweise möchten Sie auch nach externen Ressourcen suchen, z. B. nach Webfonts und anderen Verweisen, die von einer https-Domäne stammen müssen, um Zertifikatswarnungen zu vermeiden.

Hoffe das hilft.

Karolus
quelle
-2

Es gibt noch eine andere Lösung: Fügen Sie einfach $ _SERVER ['HTTPS'] = 'On' hinzu. in der settings.php Datei

Weitere Informationen finden Sie unter https://www.drupal.org/https-information#comment-9901783

Es scheint jedoch, dass die htaccess-Methode unabhängig davon umleitet, wohingegen die settings.php-Datei das Löschen des Browser-Cache erfordert.

Steve
quelle
2
Schien nicht, den Trick von selbst zu tun. Musste die Drupal-Caches leeren, aber obwohl Drupal-Seiten als https bereitgestellt wurden, waren Ressourcen wie Bilder dies nicht. Sie wurden geladen, aber der Browser warnte (in der Konsole) und das Schlosssymbol warnte. Ich musste die htaccess-Direktive von Ricks answer hinzufügen, um ein korrektes Schlosssymbol zu erhalten.
Commonpike