Je ne suis pas clair sur la différence entre une clé CA et un certificat. Une clé CA n'est-elle pas simplement un certificat? Permettez-moi d'essayer de clarifier avec un exemple.
J'ai un client et un serveur. J'essaie seulement de valider ma connexion à mon serveur et je n'essaie pas d'établir la confiance des autres, donc je me fiche de signer avec une vraie autorité de certification.
Option 1: Générez une autorité de certification auto-signée (ssCA) et utilisez-la pour signer un certificat ( C ). J'installe ensuite ssCA dans le magasin de clés racine de mon client et configure mon serveur pour utiliser le certificat C .
Option 2: Générez un certificat auto-signé ( SSC ). Installez SSC dans le magasin de clés racine de mon client. Configurer mon serveur pour utiliser le certificat SSC .
La deuxième option semble être un processus beaucoup plus simple. Cela devrait-il encore fonctionner?
Les deux options sont valides, l'option 2 est plus simple.
L'option 1 (configuration de votre propre autorité de certification) est préférable lorsque vous avez besoin de plusieurs certificats. Dans une entreprise, vous pouvez configurer votre propre autorité de certification et installer le certificat de cette autorité de certification dans le magasin de clés racine de tous les clients. Ces clients accepteront alors tous les certificats signés par votre autorité de certification.
L'option 2 (auto-signature d'un certificat sans autorité de certification) est plus facile. Si vous n'avez besoin que d'un seul certificat, cela suffit. Installez-le dans les magasins de clés de vos clients et vous avez terminé. Mais lorsque vous avez besoin d'un deuxième certificat, vous devez l'installer à nouveau sur tous les clients.
Voici un lien avec plus d'informations: Création d'autorités de certification et de certificats SSL auto-signés
Tout d'abord, en ce qui concerne la distinction entre clé et certificat (en ce qui concerne la "clé CA"), 3 éléments sont utilisés pour parler des certificats à clé publique (généralement X.509): la clé publique, la clé privée et le certificat. La clé publique et la clé privée forment une paire. Vous pouvez signer et décrypter avec la clé privée, vous pouvez vérifier (une signature) et crypter avec la clé publique. La clé publique est destinée à être distribuée, tandis que la clé privée est destinée à rester privée.
Un certificat de clé publique est la combinaison entre une clé publique et diverses informations (concernant principalement l'identité du propriétaire de la paire de clés, qui contrôle la clé privée), cette combinaison étant signée à l'aide de la clé privée de l'émetteur du certificat. Un certificat X.509 a un nom distinctif sujet et un nom distinctif émetteur. Le nom de l'émetteur est le nom du sujet du certificat de l'entité qui délivre le certificat. Les certificats auto-signés sont un cas particulier où l'émetteur et le sujet sont identiques. En signant le contenu d'un certificat (c'est-à-dire en délivrant le certificat), l'émetteur affirme son contenu, en particulier la liaison entre la clé, l'identité (le sujet) et les différents attributs (qui peuvent indiquer l'intention ou l'étendue d'utilisation du certificat).
En plus de cela, la spécification PKIX définit une extension (partie d'un certificat donné) qui indique si un certificat peut être utilisé comme certificat CA, c'est-à-dire s'il peut être utilisé comme émetteur pour un autre certificat.
À partir de cela, vous créez une chaîne de certificats entre le certificat d'entité finale (qui est celui que vous souhaitez vérifier, pour un utilisateur ou un serveur) et un certificat CA auquel vous faites confiance. Il peut y avoir des certificats CA intermédiaires (émis par d'autres certificats CA) entre le certificat d'entité finale de votre service et le certificat CA auquel vous faites confiance. Vous n'avez pas strictement besoin d'une autorité de certification racine en haut (un certificat d'auto-signature CA), mais c'est souvent le cas (vous pouvez choisir de faire confiance à un certificat d'autorité de certification intermédiaire directement si vous le souhaitez).
Pour votre cas d'utilisation, si vous générez un certificat auto-signé pour un service spécifique, qu'il ait le drapeau CA (extension des contraintes de base) n'a pas vraiment d'importance. Vous en aurez besoin pour être un certificat CA pour pouvoir émettre d'autres certificats (si vous voulez construire votre propre PKI). Si le certificat que vous générez pour ce service est un certificat CA, il ne devrait pas faire de mal. Ce qui importe le plus, c'est la façon dont vous pouvez configurer votre client pour faire confiance à ce certificat pour ce serveur particulier (les navigateurs devraient vous permettre de faire une exception explicite assez facilement par exemple). Si le mécanisme de configuration suit un modèle PKI (sans utiliser d'exceptions spécifiques), puisqu'il ne sera pas nécessaire de créer une chaîne (avec un seul certificat), vous devriez pouvoir importer le certificat directement dans le cadre des ancres d'approbation de votre client, qu'il s'agisse d'un certificat CA ou non (mais cela peut dépendre du mécanisme de configuration du client).
Vous pouvez openssl x509 -noout -text -in $YOUR_CERT
pour voir les différences entre les contenus des fichiers:
Dans votre CA auto-signée, vous pouvez voir:
X509v3 extensions:
X509v3 Basic Constraints:
CA:TRUE, pathlen:0
Et dans votre certificat auto-signé, c'est:
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Vous devez toujours avoir une autorité de certification racine, l'autorité de certification a une clé qui peut être utilisée pour signer un certificat de niveau inférieur et un certificat racine qui peut être incorporé dans les certificats racine acceptés sur le client et est utilisé pour vérifier les certificats inférieurs pour vérifier qu'ils sont valides. Auto-signé signifie simplement que vous êtes votre propre CA. Chaque fois que vous créez un certificat auto-signé, vous créez une autorité de certification, puis signez un certificat de site avec cette autorité de certification.