¿Las “Plantillas de certificado” se usan solo como una “Plantilla” o validan una solicitud de certificado?

0

Estoy tratando de aprender cómo las Plantillas de certificados de Microsoft interactúan con una solicitud de certificado, y solo puedo adivinar que toman una de las dos / tres formas:

  1. Simplemente ayudan al cliente a crear una solicitud, EKU y otras configuraciones para el envío de PKCS10 al servidor.

  2. O se usan para validar, controlar y restringir lo que un usuario puede hacer exactamente al cargar una solicitud PKCS10. Algo así como un firewall a nivel de aplicación

  3. Una combinación de lo anterior que usa datos en el certificado o heurística para emitir o denegar automáticamente un certificado.

Lo que estoy tratando de evitar

Quiero evitar que un usuario se desvíe de las plantillas aprobadas que les ofrecí, de alguna manera ... en particular, quiero evitar un cambio de:

  • Fecha de caducidad
  • EKU
  • Restricciones básicas
  • Secciones críticas / no críticas
  • Uso de claves
  • Etc.

... si pegan la solicitud de certificado manual en la página de inscripción (que no usa una plantilla)

Research

Estoy buscando en los documentos para Certenroll y vea que hay un método de inscripción que usa una plantilla y un método de envío que no lo hace.

Supongo que el método Enviar () de CERTCLILib.ICertRequest3 debe ejecutarse con una cuenta de servicio controlada, ya que se puede enviar cualquier cosa al servidor, pero las cosas no están demasiado claras desde el punto de vista de la documentación.

Dado que parece haber cierta flexibilidad en el uso de plantillas a nivel programático, no estoy seguro de cómo describir los beneficios o la utilidad de una plantilla de servidor.

Por último, es posible que el "Servidor de seguridad de la aplicación" para las solicitudes de certificado, exista en forma de código personalizado, Microsoft Forefront Identity Manager o algún otro producto.

Se agradece la asistencia.

    
pregunta random65537 08.07.2014 - 01:18
fuente

1 respuesta

1

En una configuración de Active Directory, las "plantillas de certificado" deben ser utilizadas por los clientes y por la propia CA ("Servicios de certificado AD").

Para la CA , las plantillas describen cómo se emitirán los certificados, incluyendo:

  • El contenido del certificado, incluidas todas las extensiones, el período de validez, etc.
  • Las condiciones de emisión, por ejemplo, si la solicitud debe estar firmada por un agente de RA autorizado o no.
  • Los derechos de acceso a la plantilla.

Hay muchas variaciones, porque las plantillas se han enriquecido a lo largo de las versiones de Windows (por lo tanto, existen las plantillas "Windows 2000", "Windows 2003" y "Windows 2008"), y la propia CA puede ser "independiente" o " empresa ": en este último caso, se supone que la CA se alimenta automáticamente de las cuentas AD y ACL para saber si se debe cumplir una solicitud de certificado determinada, mientras que en una CA independiente, la mayoría de las solicitudes estarán sujetas a una intervención manual de el administrador de CA (que hará clic en "emitir" o "denegar").

El árbol de AD contiene todas las plantillas conocidas (puedes crear las tuyas propias). La propia CA (el servicio AD CS) "publicará" algunas de estas plantillas: esta es la lista de las plantillas que realmente utilizará el servicio.

En cualquier caso, el contenido de las solicitudes de certificado de los clientes será mayormente ignorado (excepto, por supuesto, la clave pública); Las plantillas deciden lo que va en los certificados, no la solicitud. Hay excepciones; por ejemplo, la plantilla puede especificar que el Nombre del sujeto se tomará de la solicitud, en cuyo caso el SubjectDN y la extensión del Nombre alternativo del sujeto se importará "tal cual" desde la solicitud (en el momento de la configuración , puede recibir una advertencia de la GUI de que tal configuración en una "PKI de empresa" puede ser peligrosa porque quien tenga permiso, a nivel de AD, para solicitar dicho certificado, puede poner un nombre arbitrario allí, por lo que mejor verifique sus derechos de acceso).

Para el cliente , las plantillas son recomendables: documentan el tipo de certificado que los clientes pueden solicitar y lo que deben incluir en la solicitud. Por ejemplo, la plantilla puede indicar que los clientes usarán un CSP específico (Proveedor de servicios criptográficos) para generar el par de claves; Dado que la CA no puede verificar realmente que se utilizó el CSP especificado, esto es solo para el beneficio de los clientes. Tanto el cliente como el servidor utilizan algunas otras configuraciones (por ejemplo, el tamaño de la clave).

La plantilla solo puede ser utilizada por clientes que tengan acceso al servidor de AD, es decir, dentro del dominio. Los clientes que se encuentran fuera del dominio deben desarrollar sus solicitudes de la forma que consideren adecuada, según la información transmitida fuera de banda. Un método habitual, en el mundo de Windows, para que un cliente fuera de dominio genere una solicitud de certificado, es usar certreq.exe herramienta de línea de comandos con un" archivo de política "y la opción -new .

CertEnroll es una API programática que se utiliza en el lado del cliente; encapsula varias funcionalidades:

  • CertEnroll puede generar una nueva solicitud de certificado (incluida la generación de pares de claves). Puede hacerlo alimentando parámetros de solicitud provistos por programación (por ejemplo, tipo y tamaño de clave). También puede acceder automáticamente al servidor de AD para obtener la información de una plantilla publicada.
  • CertEnroll puede hablar con la CA para enviar la solicitud.
  • CertEnroll guarda localmente las solicitudes (en un almacén de certificados dedicado) para que, cuando se reciba e importe el certificado, se pueda restaurar el enlace con la clave privada (que nunca abandonó la máquina cliente).

Para resumir:

  • Las plantillas de certificado son el método mediante el cual puede configurar lo que la CA pone en los certificados que emite y bajo qué condiciones puede emitir los certificados.
  • Se supone que los clientes envían solicitudes que "funcionan" con lo que espera la CA (por ejemplo, tipo y tamaño de clave). Los clientes pueden usar las plantillas para obtener esa información, si realmente tienen acceso a las plantillas (es decir, los clientes están dentro del dominio). El uso de plantillas por parte de los clientes no es obligatorio.
  • Sin embargo, cuando un cliente solicita un certificado, la CA debe de alguna manera "saber" con qué plantilla se relaciona la solicitud. El nombre de la plantilla se puede incluir dentro de la solicitud (como una extensión específica de Microsoft) o se puede proporcionar junto con la solicitud; CertEnroll y certreq.exe saben cómo hacerlo.
respondido por el Thomas Pornin 08.07.2014 - 16:46
fuente