Se exponen dos servicios diferentes, llámelos 'servicio de gato' y 'servicio de perro'. Los "gatos" y los "perros" se autentican en los servicios a través de certificados de clientes. Los certificados de cliente tienen identidades de gato y perro en el campo Asunto (o SAN).
La jerarquía PKI es la siguiente:
root CA
/ \
cat CA dog CA
/ \
cat client certs dog client certs
Quiero impedir que el operador de CA del servicio cat expida certificados de cliente perro (y al revés).
Parece que hay dos opciones para esto:
-
use la extensión de certificado nombre restricción en las CA intermedias. En este caso, el servidor está configurado para confiar en la CA raíz. Ahora, si un cliente envía un certificado de perro firmado por la CA cat (+ cat CA como parte de la cadena de certificados), el servidor ve una contradicción y lo rechaza incluso antes de validarse contra la CA raíz.
-
Haga que el oyente de 'cat service' coloque el pin intermedio 'cat CA' y el servicio de perro pin 'dog CA'. En este caso, el servidor no confía en la CA raíz.
-
Como se señala en los comentarios de garethTheRed, también está la tercera opción: > > Utilice las Políticas de certificado para restringir cada ruta de CA a un OID. Haga que la CA raíz emita cada certificado de Sub CA con su propio OID y haga que el servidor lo verifique durante la verificación de la ruta del certificado del cliente.
¿Qué son las ventajas / desventajas / comparación de los tres enfoques?
Nota: esta es una pregunta diferente a ¿Dos CA intermedias firmadas por la misma CA raíz confiarán mutuamente en los certificados firmados del cliente? , ya que pregunta si hay algún inconveniente / desventaja particular para cualquiera de los dos enfoques enumerados.