Erzwingen Sie HTTPS auf allen Seiten im Frontend, nicht nur auf der Kasse / dem Konto


10

Im Backend habe ich im Frontend die Option "Sichere URLs verwenden" aktiviert . Benutzer können meine Website jedoch weiterhin über nicht sichere URLs besuchen, mit Ausnahme von Checkout- / Kontoseiten.

Ich möchte sichere URLs auf allen Seiten erzwingen. Was ich gerade mache, ist die Änderung der unsicheren Basis-URL in "https: // ...."

Es scheint zu funktionieren. Wenn Benutzer HTTP verwenden, werden sie zu https umgeleitet. Aber ich frage mich, ob dies der richtige Weg ist. Irgendwelche Nebenwirkungen?


Ich habe gehört, dass der richtige Weg darin besteht, die sichere Route in config.xml

Antworten:


16

Die Standardantwort lautet: Setzen Sie die unsichere Basis-URL auf https: //. Abhängig von Ihrem Setup reicht dies bereits für eine Umleitung aus, wenn Benutzer versuchen, http: // zu verwenden

Vielleicht ist eine Weiterleitung auf Webserver-Ebene besser, da dadurch vermieden wird, dass Anfragen zuerst über PHP gesendet werden.

Und wenn Sie die wirklich perfekte Lösung suchen, sollten Sie Ihre Website unter https://hstspreload.appspot.com/ hinzufügen . Wenn Sie jedoch Ihr Zertifikat ändern müssen, kann dies zu großen Problemen führen. Lassen Sie Ihren Hoster sich um diesen Teil kümmern.


Warum das Zertifikat ändern? HSTS "nur" bewirkt, dass der Browser von nun an nur noch über HTTPS auf die Seite zugreift. Ich habe ein Modul dafür gemacht: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt

1
Vielleicht habe ich das ein bisschen mit dem Anheften von Zertifikaten verwechselt. Dachte, die Vorladung würde auch Fingerabdruck für das Zertifikat enthalten
Flyingmana

2
@Flyingmana: Wenn Sie sich die aktuelle HSTS-Preload-Liste in der Chromium-Quelle ansehen , enthält die überwiegende Mehrheit der Einträge keinen Zertifikatfingerabdruck oder ähnliches, sondern nur den Domainnamen.
Leigh Brenecki

4

Sie können dies mit .htaccess in Apache tun. Verwenden Sie diese Zeilen:

############################ Force SSL ############################
RewriteCond %{HTTP_HOST} !^localhost$
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############################ Force SSL ############################

4

Für alle, die darüber stolpern (wie ich)

Verwenden Sie htaccess nicht. Unter admin gehenStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

Es ist nicht erforderlich, Dateien zu bearbeiten.


1
Whoa, gutes Timing. antwortete gestern. Ich glaube, dies sollte die Antwort sein ... zumindest zwingt es https für Frontend und Admin für mich, ohne Apache zu berühren. Die aktuell ausgewählte Antwort aktiviert HTTPS, aber diese Antwort "erzwingt" https.
Joe Fletcher

1
Dies ist genau das, was der Fragesteller sagte, dass sie es versucht haben und dass es nicht funktioniert hat
Dom

2

Ich habe die vorherigen Lösungen ausprobiert und obwohl sie zu funktionieren schienen, haben sie mich aus dem Admin-Panel ausgeschlossen (verstehe den Grund nicht vollständig).

Um wieder in das Admin-Panel zu gelangen, musste ich in phpmyadmin und in die Datenbanktabelle core_config_data wechseln und beide Pfade ändern : web / secure / use_in_adminhtml und web / unsecure / base_url wieder in das Admin-Panel. Und vergessen Sie nicht, den Cache-Ordner zu löschen, wenn Sie Änderungen in der Datenbank vornehmen müssen ...

Daher habe ich stattdessen die folgende .htaccess-Lösung angewendet, mit der ich mich auch beim Administrator anmelden kann

# AFTER THIS SECTION
############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# PUT THIS 
############# ALL PAGES HTTPS #################
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/admin/
RewriteCond %{REQUEST_URI} !/downloader/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############# ALL PAGES HTTPS #################

Hoffe es hilft jemandem


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.