RFC 6797 - HTTP Strict Transport Security (Sécurité Stricte du Transport HTTP, HSTS)
Internet Engineering Task Force (IETF)
Request for Comments : 6797
Catégorie : Standards Track
ISSN : 2070-1721
Auteurs :
J. Hodges (PayPal)
C. Jackson (Carnegie Mellon University)
A. Barth (Google, Inc.)
Date de publication : Novembre 2012
Résumé (Abstract)
Cette spécification définit un mécanisme permettant aux sites web de déclarer qu'ils ne sont accessibles que via des connexions sécurisées et/ou permettant aux utilisateurs de diriger leur agent utilisateur (User Agent) pour interagir avec des sites donnés uniquement via des connexions sécurisées. Cette politique globale est appelée HTTP Strict Transport Security (HSTS). La politique est déclarée par les sites web via le champ d'en-tête de réponse HTTP Strict-Transport-Security et/ou par d'autres moyens, tels que la configuration de l'agent utilisateur, par exemple.
Statut de ce mémo (Status of This Memo)
Ceci est un document Internet Standards Track.
Ce document est un produit de l'Internet Engineering Task Force (IETF). Il représente le consensus de la communauté IETF. Il a fait l'objet d'un examen public et a été approuvé pour publication par l'Internet Engineering Steering Group (IESG). De plus amples informations sur les normes Internet sont disponibles dans la section 2 de la RFC 5741.
Des informations sur le statut actuel de ce document, les errata et comment fournir des commentaires peuvent être obtenues à :
http://www.rfc-editor.org/info/rfc6797
Avis de droit d'auteur (Copyright Notice)
Copyright (c) 2012 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.
Ce document est soumis au BCP 78 et aux dispositions légales de l'IETF Trust relatives aux documents IETF (http://trustee.ietf.org/license-info) en vigueur à la date de publication de ce document. Veuillez examiner attentivement ces documents, car ils décrivent vos droits et restrictions concernant ce document.
Table des matières (Table of Contents)
- 1. Introduction
- 1.1 Organization of This Specification
- 1.2 Document Conventions
- 2. Overview (Aperçu)
- 2.1 Use Cases
- 2.2 HTTP Strict Transport Security Policy Effects
- 2.3 Threat Model
- 2.4 Requirements
- 3. Conformance Criteria (Critères de conformité)
- 4. Terminology (Terminologie)
- 5. HSTS Mechanism Overview (Aperçu du mécanisme HSTS)
- 5.1 HSTS Host Declaration
- 5.2 HSTS Policy
- 5.3 HSTS Policy Storage and Maintenance by User Agents
- 5.4 User Agent HSTS Policy Enforcement
- 6. Syntax (Syntaxe)
- 6.1 Strict-Transport-Security HTTP Response Header Field
- 6.2 Examples
- 7. Server Processing Model (Modèle de traitement du serveur)
- 7.1 HTTP-over-Secure-Transport Request Type
- 7.2 HTTP Request Type
- 8. User Agent Processing Model (Modèle de traitement de l'agent utilisateur)
- 8.1 Strict-Transport-Security Response Header Field Processing
- 8.2 Known HSTS Host Domain Name Matching
- 8.3 URI Loading and Port Mapping
- 8.4 Errors in Secure Transport Establishment
- 8.5 HTTP-Equiv <Meta> Element Attribute
- 8.6 Missing Strict-Transport-Security Response Header Field
- 9. Constructing an Effective Request URI (Construction d'un URI de requête effectif)
- 9.1 ERU Fundamental Definitions
- 9.2 Determining the Effective Request URI
- 10. Domain Name IDNA-Canonicalization (Canonicalisation IDNA des noms de domaine)
- 11. Server Implementation and Deployment Advice (Conseils d'implémentation et de déploiement du serveur)
- 11.1 Non-Conformant User Agent Considerations
- 11.2 HSTS Policy Expiration Time Considerations
- 11.3 Using HSTS in Conjunction with Self-Signed Public-Key Certificates
- 11.4 Implications of includeSubDomains
- 12. User Agent Implementation Advice (Conseils d'implémentation de l'agent utilisateur)
- 12.1 No User Recourse
- 12.2 User-Declared HSTS Policy
- 12.3 HSTS Pre-Loaded List
- 12.4 Disallow Mixed Security Context Loads
- 12.5 HSTS Policy Deletion
- 13. Internationalized Domain Names for Applications (IDNA): Dependency and Migration (Noms de domaine internationalisés : dépendance et migration)
- 14. Security Considerations (Considérations de sécurité)
- 14.1 Underlying Secure Transport Considerations
- 14.2 Non-Conformant User Agent Implications
- 14.3 Ramifications of HSTS Policy Establishment Only over Error-Free Secure Transport
- 14.4 The Need for includeSubDomains
- 14.5 Denial of Service
- 14.6 Bootstrap MITM Vulnerability
- 14.7 Network Time Attacks
- 14.8 Bogus Root CA Certificate Phish plus DNS Cache Poisoning Attack
- 14.9 Creative Manipulation of HSTS Policy Store
- 14.10 Internationalized Domain Names
- 15. IANA Considerations (Considérations IANA)
- 16. References (Références)
- 16.1 Normative References
- 16.2 Informative References
Annexes (Appendices)
- Appendix A. Design Decision Notes (Notes de décision de conception)
- Appendix B. Differences between HSTS Policy and Same-Origin Policy (Différences entre la politique HSTS et la politique de même origine)
- Appendix C. Acknowledgments (Remerciements)
Ressources associées
- Texte officiel : RFC 6797
- Page officielle : RFC 6797 DataTracker
- Errata : RFC Editor Errata
- Liste de préchargement HSTS : hstspreload.org
Référence rapide
Valeur fondamentale de HSTS
HSTS résout les problèmes de sécurité web critiques suivants en forçant les connexions HTTPS :
- Attaques SSL Stripping : Les attaquants remplacent les liens HTTPS par HTTP
- Attaques de l'homme du milieu : Interception et modification du trafic non chiffré
- Détournement de session : Vol de cookies transmis via HTTP
- Problèmes de contenu mixte : Pages HTTPS chargeant des ressources HTTP
Utilisation de base
Exemple de configuration du serveur (Nginx) :
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Comportement du navigateur :
L'utilisateur visite : http://example.com
Le navigateur convertit automatiquement en : https://example.com
Erreur de certificat : Blocage direct, aucun contournement autorisé
Recommandations de déploiement
- Phase de test :
max-age=300(5 minutes) - Déploiement initial :
max-age=86400(1 jour) - Opération stable :
max-age=31536000(1 an) - Entrée dans la liste de préchargement :
max-age=63072000; includeSubDomains; preload
Considérations importantes
⚠️ Avertissements importants :
- HSTS est difficile à révoquer rapidement une fois défini
- Assurez-vous que tous les sous-domaines prennent en charge HTTPS avant d'utiliser
includeSubDomains - N'envoyez pas d'en-têtes HSTS dans les réponses HTTP (ils seront supprimés)
- Évitez d'utiliser des valeurs max-age à long terme dans les environnements de développement
Cette RFC est l'un des piliers de la sécurité web moderne et est prise en charge par tous les navigateurs principaux. Le déploiement approprié de HSTS peut améliorer considérablement la sécurité des sites web.