1.
No, no es posible en general , siempre que todos los certificados se generen con el valor de campo <.o9 <% de Extended Key Usage
(EKU) y todos sus servidores TLS respeten RFC .
Para un certificado de cliente , EKU debe contener el valor TLS Web
Client
Authentication
, y para un certificado de servidor , debe contener el valor TLS Web
Server
Authentication
.
(Tenga en cuenta que proporciono una descripción legible para los humanos de los campos y los valores, no los valores OID reales .)
Es común que las autoridades de certificación incluyan también el valor TLS Web
Client
Authentication
en un certificado de servidor , que no es malo en sí mismo ( al menos personalmente no veo un escenario de ataque aquí), pero no al revés.
Tome el certificado StackExchange como ejemplo:
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.
Además, un certificado de servidor contiene el nombre de dominio de un servidor en los campos Subject
o en los campos Subject Alternative Name
X.509. Para StackExchange se ve así:
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, <...>
Aquí, el Common Name
en el certificado es igual a *.stackexchange.com
, y Subject
contiene el Common Name
.
Ahora, para comenzar a emitir certificados de cliente, normalmente tiene que crear un esquema de nombres , es decir, lo que coloca en el campo Subject
y el campo anidado Common Name
. La forma de hacerlo depende completamente de usted, pero es mejor asegurarse de que bajo ninguna circunstancia un Common Name
dentro de un certificado de cliente coincida con un Common Name
de uno de sus dominios, en caso de que su CA o alguno de los TLS- Las aplicaciones mejoradas en su infraestructura no obedecen a RFC estrictamente.
Una forma sencilla de garantizar esto es poner el nombre completo de un usuario en el Common Name
y luego asegurarse de que cada certificado de cliente emitido o hace contiene un espacio , o no contiene un punto . Que yo sepa, al menos uno de esos dos requisitos podría satisfacerse con casi cualquier nombre completo que exista en el mundo.