Technical Guide Intermediate 12 min read

Subject Alternative Name

L'extension Subject Alternative Name (SAN) est ce qui indique réellement aux navigateurs et aux clients pour quels domaines, IP ou adresses e-mail un certificat est valide. Si elle est mal configurée, vos utilisateurs voient des avertissements de sécurité. Ce guide explique comment fonctionnent les SAN, comment les configurer et comment les gérer à grande échelle.

En bref

Type
Technical Guide
Niveau
Intermediate
Suivant
Qu'est-ce qu'un CSR ?

Vue d'ensemble

Le Subject Alternative Name (SAN) est une extension de certificat X.509 qui précise les identités supplémentaires liées au certificat. Si le Common Name (CN) du champ Subject contenait historiquement le nom de domaine, l'extension SAN est désormais le champ faisant autorité que les navigateurs et les clients utilisent pour vérifier l'identité.

Un même certificat peut contenir plusieurs SAN : c'est ainsi que fonctionnent les certificats multi-domaines. Par exemple, un certificat peut être valide pour www.example.com, api.example.com et mail.example.com. Chacun d'eux est une entrée SAN de type dNSName.

Les SAN sont définis dans la RFC 5280, section 4.2.1.6. Il s'agit d'une extension critique : si un certificat contient un SAN, les clients doivent l'utiliser pour la correspondance d'identité et ignorer totalement le Common Name.

Étapes clés

1

Créer un fichier de configuration OpenSSL

Créez un fichier nommé san.cnf contenant les entrées SAN nécessaires :

Composants clés

dNSName

Le type le plus courant. Indique un nom de domaine pleinement qualifié pour lequel le certificat est valide.

iPAddress

Lie le certificat à une adresse IP spécifique. Utilisé pour les services accessibles par IP plutôt que par nom d'hôte.

rfc822Name

Une adresse e-mail. Utilisé dans les certificats S/MIME pour lier le certificat à une boîte aux lettres spécifique.

uniformResourceIdentifier

Un URI. Utilisé dans des contextes spécialisés comme les identifiants SPIFFE pour l'identité de charges de travail au sein de service meshes.

Exigences clés

SAN totalement absent

L'erreur la plus courante. Un certificat avec un CN mais sans extension SAN déclenchera ERR_CERT_COMMON_NAME_INVALID dans Chrome, Firefox et Safari. Incluez toujours le domaine principal à la fois en CN et en entrée SAN.

Oublier le domaine nu

Inclure www.example.com mais pas example.com (ou l'inverse). Les utilisateurs accèdent aux deux, et un SAN manquant entraîne un avertissement de certificat pour l'un d'eux.

Noms d'hôtes internes dans des certificats publics

Les CA publiques ne peuvent pas émettre de certificats avec des noms internes comme server01.corp.local. Utilisez une PKI privée pour les noms d'hôtes internes et réservez les certificats publics aux domaines routables publiquement.

Erreurs de format pour les SAN d'adresse IP

Les adresses IP dans les SAN doivent utiliser le préfixe IP:, pas DNS:. Écrire DNS:192.168.1.1 provoquera des échecs de validation, car le client attend une correspondance de type IP et non une résolution DNS.

Surcharger un seul certificat

Ajouter des dizaines de SAN à un seul certificat crée un large rayon d'impact : si cette clé est compromise, tous les domaines sont touchés. Cela engendre aussi un couplage opérationnel. Équilibrez la consolidation et la gestion des risques.

Comparaison

Common Name (CN)Subject Alternative Name
EmplacementChamp SubjectExtension (OID 2.5.29.17)
Valeurs multiplesNon (valeur unique)Oui (entrées illimitées)
Types pris en chargeChaîne libreDNS, IP, e-mail, URI, annuaire
Comportement navigateurIgnoré si SAN présentFait autorité pour la correspondance
Statut RFCDéprécié pour la correspondance (RFC 6125)Requis (RFC 5280)
openssl x509 -in cert.pem -noout -ext subjectAltName

X509v3 Subject Alternative Name:
DNS:www.example.com, DNS:example.com, DNS:api.example.com
[req]
distinguished_name = req_dn
req_extensions = v3_req
prompt = no

[req_dn]
CN = www.example.com
O = Example Inc
C = US

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = example.com
DNS.3 = api.example.com
IP.1 = 10.0.1.50
openssl req -new -newkey rsa:2048 -nodes \
-keyout server.key -out server.csr \
-config san.cnf
openssl req -in server.csr -noout -text | grep -A1 "Subject Alternative"

X509v3 Subject Alternative Name:
DNS:www.example.com, DNS:example.com, DNS:api.example.com, IP:10.0.1.50
À retenir : depuis Chrome 58 (2017), les navigateurs ignorent le Common Name si une extension SAN est présente. Si votre certificat possède un CN mais aucun SAN, les utilisateurs verront ERR_CERT_COMMON_NAME_INVALID. Incluez toujours des SAN.
Comment nous aidons

Evertrust & Subject Alternative Name

Application des politiques SANEvertrust PKI vous permet de définir des modèles de certificats qui restreignent les types, motifs et nombres de SAN autorisés. Empêchez les certificats mal configurés avant leur émission.

Visibilité complète sur les SANEvertrust CLM découvre chaque certificat de votre infrastructure et indexe toutes les entrées SAN. Recherchez par domaine, IP ou e-mail pour retrouver chaque certificat couvrant une identité donnée.

Émission automatisée avec SANUtilisez ACME, EST ou les API REST pour demander des certificats avec exactement les SAN dont vos services ont besoin. Aucune configuration OpenSSL manuelle nécessaire.