web-dev-qa-db-fra.com

Extension OpenSSL CA keyUsage

Je souhaite configurer une chaîne de certificats, avec une autorité de certification "racine" auto-signée en haut, qui signe les sous-autorités de certification, qui peuvent ensuite signer les certificats client et serveur. Lors de la configuration de openssl.cnf, j’ai remarqué un paramètre keyUsage, qui doit apparemment être défini sur la fonction pour laquelle la clé est supposée être utilisée. Bien que les valeurs des paramètres soient documentées, je ne trouve aucune information sur celles à utiliser dans certaines circonstances.

Que signifient les valeurs keyUsage et que dois-je utiliser dans les situations suivantes?

  • Autorité de certification racine auto-signée
  • Autorité de certification intermédiaire (pouvant signer d'autres autorités de certification)
  • Autorité de certification intermédiaire (qui ne peut pas signer d'autres autorités de certification)
  • Certificats non-CA

De plus, les autres extensions doivent-elles être spécifiées avec certaines valeurs, telles que nsCertType?

10
Xenopathic

Tout certificat d'autorité de certification, qu'il s'agisse d'une racine ou d'un intermédiaire, doit avoir l'extension keyCertSignname__. Si vous souhaitez également signer une liste de révocation (CRL) avec le certificat de l'autorité de certification, vous devez également ajouter cRLSignname__. Toute autre utilisation de clé peut et doit être évitée pour les certificats d'AC.

La liste des valeurs acceptées par openssl est documenté ici .

Pour les certificats d'entité finale, vous pouvez utiliser l'une des autres keyUsages décrites par openssl. Assurez-vous simplement de ne pas inclure les extensions d'autorité de certification mentionnées ci-dessus. Du point de vue de la sécurité, vous ne devez pas utiliser plus de keyUsages que neccesary (en particulier, il est conseillé d’utiliser des certificats distincts pour la signature et le chiffrement), mais ce n’est pas une exigence stricte.

Notez qu'en dehors des keyUsages classiques, il existe également l'extension extendedKeyUsage(EKU), qui n'est pas limitée aux valeurs prédéfinies dans le RFC mais peut théoriquement contenir n'importe quel OID. Les valeurs connues sont, par exemple, les certificats permettant de signer des horodatages ou des réponses OCSP.

Vous n'avez pas besoin d'utiliser nsCertTypename__. Celles-ci, ainsi que toutes les autres extensions ns *, avaient déjà été définies par Netscape et ne devraient plus être utilisées. Vous ne trouverez probablement aucun logiciel autour de les utiliser.

Pour les autres extensions, la seule chose absolument requise est l’extension basicConstraintsqui a un drapeau booléen CAque vous devez définir en conséquence. Les extensions AuthorityKeyIdentifier et subjectkeyIdentifier sont également fortement recommandées.

9
mat