Forcer HTTPS sur toutes les pages du frontend, pas seulement sur Checkout / Account

10

Dans le backend, j'ai activé Use Secure URLs dans le Frontend . Mais les utilisateurs peuvent toujours visiter mon site via des URL non sécurisées, à l'exception des pages de paiement / compte.

Je souhaite forcer des URL sécurisées sur toutes les pages. Ce que je fais en ce moment, c'est changer l'URL de base non sécurisée en "https: // ...."

Cela semble fonctionner. Si les utilisateurs utilisent HTTP, ils seront redirigés vers https. Mais je me demande si c'est la bonne façon de procéder. Des effets secondaires?

Shawn
la source
ive entendu que la bonne façon est de remplacer la route sécurisée dans config.xml

Réponses:

16

La réponse par défaut est de définir l'URL de base non sécurisée sur https: // en fonction de votre configuration, cela suffit déjà pour une redirection si les utilisateurs essaient d'utiliser http: //

Peut-être qu'une redirection au niveau du serveur Web est meilleure, car elle évite que les requêtes passent d'abord par php.

Et si vous voulez la vraie solution parfaitement sécurisée, vous devez ajouter votre site Web sur https://hstspreload.appspot.com/ . Mais attention, si vous devez changer votre certificat, cela peut causer de gros problèmes. Laissez votre hébergeur se soucier de cette partie.

Flyingmana
la source
Pourquoi changer le certificat? HSTS "fait" que le navigateur accède désormais à la page uniquement via HTTPS. J'ai fait un module pour cela: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt
1
J'ai peut-être mélangé cela un peu avec l'épinglage de certificat. Je pensais que le préchargement contiendrait également des empreintes digitales pour le certificat
Flyingmana
2
@ Flyingmana: Si vous regardez la liste de préchargement HSTS réelle dans la source Chromium , la grande majorité des entrées ne contiennent pas d'empreinte digitale de certificat ou quoi que ce soit du genre, juste le nom de domaine.
Leigh Brenecki
4

vous pouvez le faire avec .htaccess dans apache. Utilisez ces lignes:

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

Pour tous ceux qui tombent dessus (comme moi)

N'utilisez pas htaccess. Sous admin goStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

Il n'est pas nécessaire de modifier des fichiers.

Andrew
la source
1
Whoa, bon timing. a répondu hier. Je crois que cela devrait être la réponse ... au moins, cela force https sur le frontend et l'administrateur pour moi sans toucher à apache. La réponse actuellement sélectionnée active HTTPS, mais cette réponse "force" https.
Joe Fletcher
1
C'est exactement ce que le questionneur a dit avoir essayé et que cela n'a pas fonctionné
Dom
2

J'ai essayé les solutions précédentes et même si elles semblaient fonctionner, elles m'ont bloqué hors du panneau d'administration (je ne comprends pas complètement la raison).

Pour accéder à nouveau au panneau d'administration, je devais entrer dans phpmyadmin et accéder à la table de base de données core_config_data et changer les deux chemins : web / secure / use_in_adminhtml et web / unsecure / base_url revenir dans le panneau d'administration. Et n'oubliez pas de vider le dossier cache si vous devez faire des modifications dans la base de données ...

J'ai donc appliqué la solution .htaccess suivante qui m'a permis de me connecter également à l'administrateur

# 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 #################

J'espère que cela aide quelqu'un

GiorgosK
la source