ruby-on-rails apache ssl https hsts

ruby on rails - Cómo deshabilitar HTTP Strict Transport Security?



ruby-on-rails apache (4)

Tenía una aplicación de Rails con config.force_ssl = true , pero ahora no quiero el cifrado SSL, pero mi aplicación sigue redirigiendo a https. Leí que este es un problema de Seguridad de Transporte Estricto de HTTP en Apache. ¿Cómo puedo desactivarlo?


Descubrí que no podía eliminar una entrada de HSTS en Chrome porque estaba usando una dirección de IP para el desarrollo. Parece que no pude obtener chrome://net-internals/#hsts para eliminar la entrada. Descubrí que Chrome almacena las entradas en ../AppData/local/Google/Chrome/User Data / Default / TransportSecurity, así que simplemente eliminé el archivo. Por supuesto, elimina todas las solicitudes de HSTS, pero sospecho que se reconstruirán con el tiempo.


ID calculado ofrece un poco de pensamiento sobre esto. Establecer el tiempo de caché en 0 es la mejor opción y, si lo apagas, debes dejarlo en 0 durante semanas para borrar los navegadores de los clientes. Si solo necesita borrar HSTS en chrome (para su propio navegador), puede usar chrome://net-internals/#hsts en la barra de direcciones para borrar la caché de su sitio en su navegador específico. Combinado con la "puerta de entrada" a continuación, se vuelve útil.

Puede establecer modos HSTS temporales configurando / suplantando un encabezado personalizado => clave. Básicamente, si existe un encabezado de solicitud especial y coincide con una clave, configure HSTS con un tiempo de caché de lo que necesite. Esto le permitiría encender o apagar el HSTS para todo el tráfico excepto usted. Es útil para probar HSTS antes de habilitarlo globalmente (para asegurarse de que se estén cargando todos los activos). También es útil si quieres borrar temporalmente la caché del cliente mientras se repara algo (dejándote espacio para la prueba).


No es un problema con Apache, pero con el hecho de que Rails envía un encabezado HSTS.

En Chrome, puedes borrar el estado de HSTS entrando en about:net-internals , como se describe en ImperialViolet: HSTS UI in Chrome . También puede tener que borrar la caché, ya que config.force_ssl = true también usa una redirección 301 (permanente).

Además, de acuerdo con esta respuesta , también puede hacer que su aplicación envíe un encabezado STS con max-age = 0. En tu controlador:

response.headers["Strict-Transport-Security"] = ''max-age=0''


Solo quería señalar la respuesta de @ Bruno y las sugerencias de @VanVanDyk son verdaderas y pueden aplicarse más allá del contexto de Rails / Apache. Estoy usando PHP y Nginx. PHP no tiene nada que ver con eso en mi caso, pero aquí están los pasos con Nginx:

//sorry here''s the nginx.conf part first, can''t figure out how to mix multi-line //code with an ordered list server { #... #change: # add_header Strict-Transport-Security "max-age=315360000; includeSubdomains"; #to: add_header Strict-Transport-Security "max-age=0;"; #... }

  1. borre su "historial de navegación". Para aclarar la sugerencia de @ JoeVanDyk, creo que debes borrar el "historial de navegación" porque no me funcionaba borrar el caché (probado en Chrome / Firefox, agrega comentarios si sabes más).

  2. archivo nginx.conf (ver código arriba)

  3. reiniciar el servidor

    root@ip-xxx-xxx-xxx:~# /etc/init.d/nginx restart .

Después de esto, puede revertir el add_header Strict.. nginx add_header Strict.. a lo que tenía anteriormente. Solo asegúrate de repetir los pasos 1-3 nuevamente.