1.
No, non è generalmente non possibile, purché tutti i certificati siano generati con il valore di campo X.509 corretto e Extended Key Usage
(EKU) X e tutti i server TLS rispettano RFC
Per un certificato client , EKU dovrebbe contenere il valore TLS Web
Client
Authentication
e per un certificato server , dovrebbe contenere il valore TLS Web
Server
Authentication
.
(Nota che sto fornendo una descrizione leggibile dagli umani dei campi e dei valori, non i valori effettivi di OID ).
È comune che le autorità di certificazione includano anche TLS Web
Client
Authentication
valore in un certificato server , che non è male di per sé ( almeno personalmente non vedo uno scenario di attacco qui), ma non viceversa.
Prendi il certificato StackExchange come esempio:
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA
Validity
Not Before: May 21 00:00:00 2016 GMT
Not After : Aug 14 12:00:00 2019 GMT
Subject: C=US, ST=NY, L=New York, O=Stack Exchange, Inc., CN=*.stackexchange.com
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
2.
Inoltre, un certificato server contiene il nome di dominio di un server nei campi Subject
o Subject Alternative Name
X.509. Per StackExchange appare come segue:
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA
Validity
Not Before: May 21 00:00:00 2016 GMT
Not After : Aug 14 12:00:00 2019 GMT
Subject: C=US, ST=NY, L=New York, O=Stack Exchange, Inc., CN=*.stackexchange.com
X509v3 extensions:
<...>
X509v3 Subject Alternative Name:
DNS:*.stackexchange.com, DNS:stackoverflow.com, <...>
Qui, Common Name
nel certificato è uguale a *.stackexchange.com
e Subject
contiene Common Name
.
Ora, per iniziare a rilasciare i certificati client, di solito devi creare uno schema di denominazione , cioè cosa hai inserito nel campo Subject
e nel campo% co_de nidificato. Il modo in cui lo fai dipende completamente da te, ma assicurati che in nessun caso un Common Name
all'interno di un certificato client coincida con un Common Name
di uno dei tuoi domini, nel caso in cui la tua CA o alcuni dei TLS- le applicazioni avanzate nella tua infrastruttura non obbediscono rigorosamente a RFC.
Un modo semplice per garantire che questo sia quello di inserire il nome completo di un utente in Common Name
e quindi assicurarsi che ogni certificato client emesso contenga uno spazio , o non contengono un punto . Per quanto ne so, almeno uno di questi due requisiti potrebbe essere soddisfatto con praticamente qualsiasi nome completo esistente nel mondo.