Storicamente , i Nomi distinti nei certificati (specificati da X.500) intendevano designare un'entità all'interno della Directory , che è il repository globale, mondiale, strutturato ad albero per i dati di gestione delle identità. La Directory può essere pensata come un server LDAP gigante con delega a sottoserver, in un modo un po 'simile al DNS . In realtà, tuttavia, la Directory non è mai esistita e LDAP è un sottoinsieme pratico del Directory Access Protocol . Tuttavia, i principi di denominazione sono rimasti in vigore.
Un DN è una sequenza ordinata di elementi denominati digitati, che, per la Directory, dovrebbero essere nell'ordine: Paese, Stato o Provincia, Organizzazione, Unità organizzativa (possibilmente diversi), e quindi Nome comune. X.500 è piuttosto aperto e sono possibili altri ordini (e il formato supporta la collocazione di diversi elementi del nome allo stesso livello), ma l'idea approssimativa è che il Common Name è il livello più basso della gerarchia. Pertanto, il nome comune per un'entità, qualsiasi entità, è l'elemento di denominazione più preciso.
Poiché la Directory non esiste realmente, puoi inserire qualsiasi cosa tu voglia nel Common Name, fatte salve le seguenti restrizioni:
- La codifica deve essere conforme alla specifica ASN.1 X.509: il nome comune è limitato a 64 caratteri (64 punti codice se si utilizza
UTF8String
, come si dovrebbe, secondo lo standard).
- Il
IssuerDN
di un certificato deve essere uguale al SubjectDN
del suo emittente. Le regole di uguaglianza sono teoricamente insensibili alle maiuscole e minuscole, ma le regole possono essere complesse da implementare in un mondo Unicode completo, quindi è meglio assicurarsi di avere l'uguaglianza byte-byte, che funzionerà correttamente ovunque.
- Il certificato di un server SSL deve contenere il nome server come previsto dal client (se si utilizza HTTPS, questo nome sarà quello nell'URL). Questo è specificato in RFC 2818 . L'estensione
Subject Alt Name
viene normalmente utilizzata, ma il nome comune funge da backup nel caso in cui manchi questa estensione. Poiché le implementazioni dei client SSL non sempre sono state rigorosamente rispettate dalla RFC, è meglio evitare problemi, se il certificato del server SSL contiene il nome DNS del server come nome comune (nome completo, come in " security.stackexchange.com
").
- Quando un certificato o un'identità estratta da un certificato viene "mostrato" a un utente umano, il nome comune verrà indicato in modo proeminente. Ad esempio, se si utilizza l'accesso con smart card su un sistema Windows, la schermata di accesso mostrerà il nome comune a caratteri grandi quando viene inserita la smart card. Quindi è meglio rendere il Nome Comune significativo per l'uomo comune.
Nel caso di un server VPN, il certificato del client è per il solo uso del server. Il server interpreta i contenuti del certificato, incluso il DN soggetto e il suo nome comune, in qualsiasi modo lo ritenga opportuno, incluso ignorarlo del tutto. Ad esempio, in un contesto Microsoft IIS + Active Directory, quando un client viene autenticato tramite un certificato, il server utilizzerà il Nome principale utente come trovato nell'estensione Subject Alt Name
, in una specifica Microsoft OID. Il Nome comune potrebbe essere visualizzato all'utente umano, se è presente un utente umano (ad esempio come parte di un popup di selezione certificato), ma verrà ignorato a fini di autenticazione.
Generalmente, i certificati del tuo cliente dovranno contenere tutto ciò che è richiesto dal sistema di autenticazione utilizzato dal server VPN e, dal momento che è altamente configurabile, dipende molto dal contesto locale. Ad esempio, il server VPN può delegare l'autenticazione a un server RADIUS , nel qual caso le caratteristiche del certificato (incluso il nome comune) sarà descritto dalla documentazione del server RADIUS; per il server VPN, questo sarebbe solo un blob opaco.