web-dev-qa-db-fra.com

SSL / TLS: contraintes de stratégie par rapport aux contraintes de base

Quelqu'un pourrait-il s'il vous plaît expliquer la différence entre Policy Constraints et Basic Constraints?

Il me semble qu'ils sont soit redondants, soit deux noms pour la même chose. J'aimerais des éclaircissements lorsque les recherches de Google ne vous aident pas.

5
Paul Arneson

Premièrement, abordons les "contraintes de base" ( RFC 5280, section 4.2.1.9 ). Celles-ci sont principalement pour des certificats délivrés pour les CAS. RFC 5280 définit uniquement deux "contraintes" telles:

  • Êtes-vous (The Sujet ​​de ce certificat) une ca, oui ou non?

Celui-ci est assez simple. Un certificat de CA, par définition, doit avoir une extension de contraintes de base avec cette valeur cA version booléenne définie sur "vrai" afin de être une ca.

  • En supposant que vous SONT A CA, combien de temps de la voie des certificats pouvez-vous émettre?

Ceci est la valeur pathLenConstraint, qui est un nombre dont la valeur est nulle ou supérieure. Disons que je voulais vous émettre un certificat de CA à l'aide de mon certificat CA, mais Je voulais vous assurer que vous ne pouviez pas utiliser ce certificat CA à émettre Autre Certificats. J'ajouterais l'extension des contraintes de base à votre certificat de CA, avec la valeur cA de "vrai" et ​​la valeur pathLenConstraint "0". pathLenConstraint est le nombre de "certificats intermédiaires non autypués" pouvant suivre de votre ca. Notez que le certificat fin (généralement un serveur ou un certificat client) pas comptez dans le cadre de ce numéro. Donc, en utilisant un pathLenConstraint de "0" dans le certificat de CA Je vous délive, vous pouvez utiliser ce certificat pour émettre des autres certificats fin, mais non Tous les certificats intermédiaires. Si aucune valeur pathLenConstraint est définie dans l'extension de contraintes de base, aucune limite de ce type n'est imposée.

Maintenant, examinons les "contraintes de stratégie" ( RFC 5280, section 4.2.2.1.11 ). L'extension des contraintes politiques, par RFC 5280, est destinée aux certificats qui sont délivrés à CAS; Cette extension n'est donc pas vraiment utile pour les certificats de fin (E.g. certificats client/serveur). La RFC affirme que cette extension est destinée à contraindre la validation du chemin à l'AC en termes de "politiques"; Quelles sont ces politiques?

Comprendre cela nécessite que nous examinons Politiques de certificat et mappings de stratégie . Une "politique de certificat" est une façon fantaisie de dire "i, en tant qu'organisation de l'autorité de certification, avoir une politique/des termes spécifiques; il est identifié par cette OID". Ainsi, chaque politique de certificat a une OID et généralement une URI qui indique plus d'informations sur cette politique. RFC 5280 définit une stratégie de certificat "relevé de pratique de certification" (CPS), par exemple, qui contient une URI aux exigences de traitement de l'autorité de certification (par exemple Quelles sont leurs exigences pour obtenir un certificat délivré par eux) . Je pense à eux comme des indications sur les termes d'utilisation/fin de la licence d'utilisateur Types de légumese.

Maintenant, chaque organisation de l'autorité de certification différente aura légèrement (à sauvagement) différentes politiques, mais Les gens demanderont à une autorité de certification "Comment votre stratégie X se rapporte-t-elle à cette autre politique de CA? " Surtout en ce qui concerne la signature de la croix X509 (voir RFC 4158 pour les détails de Gory). Ainsi, il y a la nécessité d'un certificat de CA de pouvoir dire "ma politique de certification X équivaut à cette politique de certification Y"; Ceci est effectué à l'aide de l'extension de mappage de stratégie, qui "mappe" le OID de la stratégie de certification X au OID de la stratégie de certification Y.

Nous avons maintenant des politiques de certification et nous avons des mappages d'une politique de certification à une autre. L'extension des contraintes de la stratégie utilise ensuite celles-ci pour définir des limites/exigences, en termes de politiques (et de mappages de politiques), lors de la promenade de la liste des certificats, du certificat final par l'intermédiaire du CAS intermédiaire à la CA racine/approuvée. Une des limites, inhibitPolicyMappings, dit "ignorer les mappages de stratégie après le nième certificat intermédiaire sur le chemin"; L'autre, requireExplicitPolicy, dit "S'il y a plus de n certificats intermédiaires dans ce chemin, exigez que tous ont toutes les règles".

Donc, pour résumer: les contraintes de base déterminent si vous êtes une ca (cA = true), et si oui, combien de temps de confiance pouvez-vous créer (limité par pathLenConstraint). Les contraintes de politique sont toutes environ Comment Marcher ce chemin de confiance se produit: Combien de certificats intermédiaires sont autorisés à avoir des mappages de stratégie, après quoi les mappages de stratégie des certificats intermédiaires sont ignorés (inhibitPolicyMapping = ...), et/ou combien de temps le chemin de la confiance peut-il être, avant qu'une politique spécifique soit requise (requireExplicitPolicy = ...).

Retour à ce certificat CA Je vous ai envoyé, dont la contrainte de base pathLenConstraint a été définie sur zéro. Cela vous interdirait d'émettre vos propres certificats intermédiaires. Et dans ce cas, il serait plutôt inutile de mettre des contraintes politiques dans ce certificat de CA, car les contraintes politiques modifient le traitement des certificats intermédiaires (que vous ne seriez pas en mesure de délivrer/créer). De même, les contraintes de stratégie sur un certificat non-CA (et un certificat final pour un client/serveur) seraient inutiles, pour la même raison: ils pas problème/création de certificats intermédiaires.

Maintenant ce qui précède est tout Théorie; Pour plus d'informations sur la réalité réalité de tout cela, en termes de mise en œuvre, je peux très recommander le matériel de Peter Gutmann sur PKI, tel que son X509 Guide de style .

J'espère que cela t'aides!

8
Castaglia