RFC 2818 - HTTP sur TLS (HTTPS) - 3. Identification des points d'extrémité (Endpoint Identification)
3. Identification des points d'extrémité (Endpoint Identification)
3.1. Identité du serveur (Server Identity)
Exigence centrale : Les clients MUST vérifier l'identité du serveur pour prévenir les attaques de l'homme du milieu (man-in-the-middle).
Processus de vérification d'identité (Identity Verification Process)
1. Le client obtient le nom d'hôte de l'URI
par exemple : https://www.example.com
2. Le serveur fournit un certificat lors de la négociation TLS
3. Le client vérifie si le nom d'hôte correspond à l'identité du certificat
Priorité des champs d'identité (Identity Field Priority)
Priorité 1 : subjectAltName (Nom alternatif du sujet)
Extension subjectAltName dans le certificat (type dNSName) :
dNSName: www.example.com
dNSName: api.example.com
← Ce champ MUST être utilisé (s'il est présent) →
Priorité 2 : Common Name (Nom commun)
CN dans le champ Subject du certificat :
CN=www.example.com
← Utiliser uniquement en l'absence de subjectAltName →
← Déprécié, les CA devraient utiliser dNSName →
Règles de correspondance (Matching Rules)
1. Correspondance avec caractères génériques :
Certificat : *.example.com
✅ Correspond : foo.example.com
❌ Ne correspond pas : bar.foo.example.com
Certificat : f*.com
✅ Correspond : foo.com
❌ Ne correspond pas : bar.com
2. Adresses IP :
URI : https://192.168.1.1/
Le certificat doit contenir : iPAddress subjectAltName
La valeur doit correspondre exactement : 192.168.1.1
3. Identités multiples :
Si le certificat contient plusieurs dNSName :
- www.example.com
- api.example.com
- *.app.example.com
← La correspondance avec l'un d'eux est acceptable →
Comportement en cas de non-correspondance (Behavior When No Match)
Clients orientés utilisateur (navigateurs) :
- ✅ MUST notifier l'utilisateur
- ⚠️ MAY donner à l'utilisateur l'option de continuer
- Ou terminer la connexion
Clients automatisés (clients API) :
- ✅ MUST enregistrer l'erreur dans un journal d'audit
- ✅ SHOULD terminer la connexion
- ⚠️ MAY fournir une option de configuration pour désactiver la vérification
Avertissement de sécurité (Security Warning)
Source d'URI non fiable :
Scénario d'attaque :
1. L'utilisateur clique sur un lien dans une page HTTP
2. La page HTTP elle-même n'est pas chiffrée
3. L'homme du milieu peut avoir remplacé l'URI
Protection :
Les utilisateurs devraient examiner attentivement le certificat du serveur
3.2. Identité du client (Client Identity)
Cas typique : Le serveur n'a pas de connaissance externe de l'identité du client.
Si le serveur a une connaissance externe (en dehors de HTTP ou TLS) :
- Devrait vérifier l'identité comme décrit ci-dessus
Authentification par certificat client :
Scénarios courants :
- Systèmes internes d'entreprise
- Contrôle d'accès aux API
- TLS mutuel (mTLS)
Vérification :
- Chaîne de certificats ancrée dans une CA appropriée
- Optionnel : Vérifier l'identité spécifique du client