web-dev-qa-db-fra.com

Comment désactiver HTTP Strict Transport Security?

J'ai eu une application Rails avec config.force_ssl = true, mais maintenant je ne veux pas de cryptage SSL, mais mon application redirige toujours vers https. J'ai lu que c'était un problème HTTP Strict Transport Security sur Apache. Comment puis-je le désactiver?

40
Phifo

Ce n'est pas un problème avec Apache, mais avec le fait que Rails envoie un en-tête HSTS.

Dans Chrome, vous pouvez effacer l'état HSTS en accédant à about:net-internals, comme décrit dans ImperialViolet: HSTS UI in Chrome . Vous devrez peut-être également vider le cache, car config.force_ssl = true utilise également une redirection 301 (permanente).

De plus, selon cette réponse , vous pouvez également demander à votre application d'envoyer un en-tête STS avec max-age = 0. Dans votre contrôleur:

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

Je voulais juste souligner la réponse de @ Bruno et les suggestions de @ JoeVanDyk sont vraies et peuvent être appliquées au-delà du contexte de Rails/Apache. J'utilise PHP et Nginx. PHP n'a rien à voir avec cela dans mon cas, mais voici les étapes avec 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. effacez votre "historique du navigateur". Pour clarifier la suggestion de @ JoeVanDyk, je pense que vous devez effacer "l'historique de navigation" car l'effacement du cache n'a pas fonctionné pour moi (testé sur Chrome/Firefox, veuillez ajouter des commentaires si vous en savez plus).

  2. fichier nginx.conf (voir le code ci-dessus)

  3. redémarrer le serveur

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

Après cela, vous pouvez rétablir le nginx add_header Strict.. commande à ce que vous aviez précédemment. Assurez-vous simplement de répéter les étapes 1 à 3.

17
tim peterson

J'ai constaté que je ne pouvais pas supprimer une entrée HSTS dans Chrome car j'utilisais une adresse IP pour le développement. Je n'arrivais pas à obtenir chrome://net-internals/#hsts pour supprimer l'entrée. J'ai trouvé que Chrome stocke les entrées dans ../AppData/local/Google/Chrome/User Data/Default/TransportSecurity donc j'ai juste supprimé le fichier. Il supprime bien sûr toutes les demandes HSTS, mais Je soupçonne qu'ils seront reconstruits au fil du temps.

2
paulz

L'identification figurée offre un peu de réflexion à ce sujet. Il est préférable de définir le temps de cache sur 0 et si vous le désactivez, vous devez le laisser à 0 pendant des semaines pour effacer les navigateurs des clients. Si vous avez juste besoin d'effacer HSTS dans chrome (pour votre propre navigateur), vous pouvez utiliser chrome://net-internals/#hsts dans la barre d'adresse pour vider le cache de votre site sur votre navigateur spécifique. Combiné avec la "porte" ci-dessous, il devient utile.

Vous pouvez définir des modes HSTS temporaires en définissant/usurpant un en-tête personnalisé => clé. Fondamentalement, s'il existe un en-tête de demande spéciale et qu'il correspond à une clé, définissez HSTS avec un temps de cache de tout ce dont vous avez besoin. Cela vous permettrait d'activer ou de désactiver HSTS pour tout le trafic, sauf vous. Utile pour essayer HSTS avant d'activer globalement (pour vous assurer que tous les actifs sont en cours de chargement). Également utile si vous souhaitez effacer temporairement le cache client pendant que quelque chose est réparé (vous laissant de la place pour le test).

1
dhaupin