web-dev-qa-db-fra.com

Contraintes de base OpenSSL

J'ai travaillé sur le livre ' Planning for PKI ' et j'en suis arrivé au point où je veux créer un certificat d'entité finale. Cependant, je suis confronté à un message d'erreur indiquant qu'il y a des erreurs d'extension à l'intérieur du certificat. J'ai été guidé par mon professeur pour examiner de près comment l'extension de contrainte de base peut être modifiée pour résoudre ce problème.

Le livre déconseille l'utilisation de l'extension Basic Constraint dans les certificats d'entité finale. Cependant, lorsque je le supprime simplement, une extension par défaut de "CA:TRUE "est quand même inséré.

Mes questions sont donc:

  1. Existe-t-il un moyen de contourner cette insertion automatique ou ai-je mal compris le livre?
  2. Des idées sur ce que je fais peut-être mal?

Ce qui suit est l'extension que j'ai utilisée pour créer le certificat:

[ server_ext ]
basicConstraints        = critical,CA:false
nsCertType              = server
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid,issuer:always
keyUsage                = critical,digitalSignature,keyEncipherment
extendedKeyUsage        = serverAuth
5
MPol

J'ai réussi à remplacer la fonctionnalité par défaut qui comprenait la contrainte de base lorsqu'elle était absente de l'extension. Il s'agissait de l'attribut csr et des extensions de copie dans le fichier openssl.cnf.

1
MPol

Je soupçonne que les pages de manuel openSSL pourraient être utiles:

Si l'extension basicConstraints est absente, le certificat est considéré comme une "AC possible". Les autres extensions sont vérifiées en fonction de l'utilisation prévue du certificat. Un avertissement est donné dans ce cas car le certificat ne doit vraiment pas être considéré comme une autorité de certification: cependant, il est autorisé d'être une autorité de certification pour contourner certains logiciels défectueux.

c'est-à-dire que KeyUsage/ExtendedKeyUsage serait (semble-t-il) utilisé pour deviner.

Tiré de https://www.openssl.org/docs/manmaster/man1/x509.html , section Extensions de certificat.

Cela me semble (différent) de ce que dit le livre de cuisine openssl ( https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html ):

L'extension Basic Constraints est utilisée pour marquer les certificats comme appartenant à une autorité de certification, ce qui leur permet de signer d'autres certificats. Les certificats non-CA auront cette extension omise ou auront la valeur de CA définie sur FALSE. Cette extension est critique, ce qui signifie que tous les certificats consommateurs de logiciels doivent comprendre sa signification.

Vérification de la page de manuel pour x509v3_config ( https://www.openssl.org/docs/manmaster/man5/x509v3_config.html - voir la section Extensions standard), un problème possible est votre syntaxe.

Ils fournissent les exemples suivants comme exemples:

basicConstraints=CA:TRUE

basicConstraints=CA:FALSE

basicConstraints=critical,CA:TRUE, pathlen:0

Ils offrent un moyen supplémentaire d'obtenir des résultats similaires:

basicConstraints=critical,@bs_section

[bs_section]

CA=true
pathlen=1

Je voudrais simplement modifier votre configuration pour lire:

basicConstraints=CA:FALSE

Au lieu de:

basicConstraints = critical,CA:false

De cette façon, votre profil est explicite et devrait remplacer toute autre configuration (éventuellement opposée) appliquée ailleurs.

1
iwaseatenbyagrue