La idea básica es que una política describe el proceso de certificación en toda la ruta, no solo en el nivel de una CA dada. Dentro de un certificado dado C , la extensión Certificate Policies
proporciona el conjunto de políticas a las que se ajusta el proceso que dio como resultado la creación de C .
Durante la validación (consulte la sección 6.1 de RFC 5280 ), el verificador calcula el "árbol de políticas". En los casos simples (consulte a continuación las posibles complicaciones), las hojas de valid_policy_tree
al final del procesamiento serán la intersección de los conjuntos de políticas en todos los certificados en la ruta (los pasos "podar el árbol de políticas" son lo que realmente calcula la intersección). En palabras sencillas, el conjunto de políticas que obtendrá al final será el conjunto de políticas que aparecerá en todos los certificados en la ruta. Es bastante lógico: se puede decir que una ruta determinada se ajusta a la política 1.2.3.4.5 solo si todos los certificados en la ruta se emitieron de manera compatible con la política 1.2.3.4.5, una propiedad que los propios certificados publicitan al contener la política 1.2.3.4.5 en su extensión Certificate Policies
.
No es obligatorio que cada certificado solo use un subconjunto de los certificados de la CA superior. Esto podría estar mal definido, ya que las rutas pueden fusionarse (una CA dada puede obtener varios certificados de varios über-CA, y podrían contener políticas distintas). El trabajo de intersección se realiza en la validación, cuando se considera una sola ruta. Conceptualmente, no hay ruta hasta la validación.
Posibles complicaciones:
- Puede haber certificados sin la extensión
Certificate Policies
.
- Puede haber asignaciones de políticas, que permiten reemplazar algunas políticas con otras a lo largo de la ruta.
- Hay una política especial llamada
anyPolicy
que altera el procesamiento.
- Hay extensiones que pueden inhibir
anyPolicy
y / o requieren una política explícita, comenzando con una profundidad de ruta determinada.
Me he encontrado con una gran cantidad de CA que se equivocan con respecto a las políticas; es decir, incluyen en cada certificado una extensión (no crítica) Certificate Policies
donde ponen una política única que es específica para esa CA. El resultado final es que, tras la validación, valid_policy_tree
está vacío (esto no es fatal, ya que estos certificados no incluyen ninguna extensión que requiera una política explícita). Esto está utilizando la extensión como un tipo de comentario glorificado.