Forzar HTTPS en todas las páginas de la interfaz, no solo Checkout / Account

10

En el backend, he habilitado Usar URL seguras en la interfaz . Pero los usuarios aún pueden visitar mi sitio a través de URL no seguras, a excepción de las páginas de pago / cuenta.

Quiero forzar URL seguras en todas las páginas. Lo que hago ahora es cambiar la URL base no segura a "https: // ...."

Parece estar funcionando Si los usuarios usan HTTP, serán redirigidos a https. Pero me pregunto si esta es la forma correcta de hacerlo. ¿Algún efecto secundario?

Shawn
fuente
He oído que la forma correcta es anular la ruta segura en config.xml

Respuestas:

16

La respuesta predeterminada es, configure la URL base no segura en https: // dependiendo de su configuración, esto ya es suficiente para una redirección si los usuarios intentan usar http: //

Tal vez sea mejor una redirección en el nivel del servidor web, ya que evita que las solicitudes pasen primero por php.

Y si desea la solución real perfectamente segura, debe agregar su sitio web en https://hstspreload.appspot.com/ . Pero cuidado con esto, si necesita cambiar su certificado, esto puede causar grandes problemas. Deje que su Hoster se preocupe por esta Parte.

Flyingmana
fuente
¿Por qué cambiar el certificado? HSTS "solo" hace que el navegador acceda a la página de ahora en adelante solo a través de HTTPS. Hice un módulo para esto: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt
1
Quizás mezclé esto un poco con la fijación de certificados. Pensé que la precarga también contendría huella digital para el certificado
Flyingmana
2
@Flyingmana: si observa la lista de precarga de HSTS real en la fuente de Chromium , la gran mayoría de las entradas no contienen una huella digital de certificado ni nada por el estilo, solo el nombre de dominio.
Leigh Brenecki
4

puedes hacer esto con .htaccess en apache. Usa estas líneas:

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

Para cualquiera que se encuentre con esto (como lo hice)

No uses htaccess. Bajo admin irStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

No hay necesidad de editar ningún archivo.

Andrés
fuente
1
Whoa, buen momento. respondió ayer. Creo que esta debería ser la respuesta ... al menos, está obligando a https en frontend y admin para mí sin tocar apache. La respuesta actualmente seleccionada habilita HTTPS, pero esta respuesta "fuerza" https.
Joe Fletcher
1
Esto es exactamente lo que dijo el interrogador que lo intentaron y que no funcionó
Dom
2

He probado las soluciones anteriores y, aunque parecían funcionar, me excluyeron del panel de administración (no entiendo completamente el motivo).

Para ingresar nuevamente al panel de administración tuve que ingresar a phpmyadmin y acceder a la tabla de base de datos core_config_data y cambiar ambas rutas : web / secure / use_in_adminhtml y web / unsecure / base_url volver al panel de administración nuevamente. Y no olvide borrar la carpeta de caché si tiene que hacer modificaciones en la base de datos ...

Así que apliqué la siguiente solución .htaccess, que también me permitió iniciar sesión en admin

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

Espero que ayude a alguien

GiorgosK
fuente