Créer une PKI avec XCA

tbowan

26 Septembre 2019

Parce que la création des certificat est plutôt complexe, je préfère utiliser des outils graphiques plus intuitifs. Aujourd'hui, je vous montre comment créer une autorité de certification (CA) et un certificat pour serveur web.

Que ce soit pour administrer mes propres services ou tester des communications sécurisées (i.e. HTTPS, SAML, ...), l'étape de création des certificats, et de la PKI correspondante, est incontournable.

Je ne sais pas vous, mais moi, ça n’est pas vraiment mon étape préférée. Je ne trouve pas la documentation ni l’usage de openssl(1) particulièrement agréable alors, sans aucune honte, je préfère les solutions graphiques...

Avant de commencer

Installer XCA

XCA est l'application graphique que je préfère pour gérer mes PKI. Il permet de créer les clés, les certificats et les demandes de signatures très intuitivement. Et à la fin, d'exporter le tout facilement.

La page de téléchargement propose tout le nécessaire pour obtenir l'application :

  1. Un exécutable Windows pour l'installer,
  2. Une archive portable pour l'exécuter sous Windows sans l'installer,
  3. Un package pour les utilisateurs de Mac,
  4. Une archive contenant le code source si vous voulez le compiler vous-même.

Sous Linux, la plupart des distributions ont un package xca installable en une ligne de commande.

Sous Debian, Ubuntu et ses dérivés, le package est disponible par défaut.

sudo apt-get install xca

Pour Red Hat, Centos et ses dérivés, il vous faudra d'abord installer les dépôts additionnels (EPEL) mais une fois fait, xca est disponible en une ligne :

sudo yum install xca

Créer une Base de donnée

Pour stocker vos certificats, et surtout vos clés privées, xca utilise un fichier chiffré spécifique qu'il vous est donc nécessaire de créer.

Pour cela, allez dans le menu Fichier / Nouvelle base de données, choisissez l'emplacement de votre fichier, donnez lui un nom et enregistrez. L'écran suivant vous demande d'entrer un mot de passe pour sécuriser votre fichier.

Nouveau mot de passe

Nouveau mot de passe

Créer la CA

Sans surprise, la première chose à créer est la CA, qui nous servira à signer nos autres certificats. Et pour cela, on va dans l'onglet certificats et on clique sur le bouton Nouveau Certificat.

Ecran initial

Ecran initial

Source

xca ouvrira une nouvelle fenêtre permettant de configurer finement le certificat. Nous n'allons ici que configurer le minimum à travers deux des onglets, source et sujet.

L'onglet Source, ouvert par défaut, permet de configurer le type de certificat comme suit :

Source, type de certificat

Source, type de certificat

Je vous conseille vivement de cliquer ensuite sur le bouton Appliquer tout. Ce qui vous simplifiera les étapes suivantes, comme les extensions, l'utilisation de la clé et autres onglets. Si vous savez ce que vous faites, vous pouvez aussi ne rien appliquer et configurer tous ces aspects manuellement.

Sujet

Le deuxième onglet permet de configurer le sujet, c'est à dire la carte d'identité du certificat. Si vous créez une PKI pour faire des tests, seul les deux champs suivants sont importants :

Sujet, carte d'identité

Sujet, carte d'identité

Si vous voulez l'utiliser en vrai, les autres champs sont également utiles mais puisqu'il s'agit de votre propre CA, ces champs sont à but informatif.

Dans tous les cas, assurez vous de fournir une clé privée. Pour cela, cliquez simplement sur le bouton Générer une nouvelle clé.

Un pop-up s'ouvrira vous demandant des précisions :

Nouvelle clé

Nouvelle clé

Cliquer sur Créer et après un court délai, XCA vous informera avoir réussi.

Pour notre cas, nous n'avons pas besoin de configurer les autres onglets, on clique donc sur OK.

Créer le certificat serveur

Partant du principe que vous voulez créer votre PKI pour un serveur (i.e. web), nous pouvons passer au certificat serveur.

De retour dans l'écran des certificats, on clique donc sur Nouveau Certificat.

Liste des certificats

Liste des certificats

Source

On retrouve la même fenêtre que précédemment mais cette fois, nous allons changer quelques paramètres.

Source, type de certificat

Source, type de certificat

Encore une fois, je vous conseille de cliquer sur Appliquer tout, ce qui évitera de configurer les onglets suivants.

Sujet

Comme précédemment, nous poursuivons avec la carte d'identité du certificat dans l'onglet Sujet.

Le CommonName était initialement utilisé pour vérifier que le certificat correspondait au site qui l'utilisait mais cette utilisation est maintenant considérée comme obsolète, chrome et firefox ne se basent plus sur ce champ, ce qui nécessite la configuration des extensions comme nous allons le voir ensuite.

Les autres champs sont à but informatif et ne sont important que si vous vouliez faire signer votre certificat par une autorité de certification. C'est à partir de ces données que l'autorité vérifiera votre identité et signera votre certificat.

Ici, puisque nous créons notre propre PKI, ces champs n'auront pas d'impact.

Sujet, identité du certificat

Sujet, identité du certificat

Comme précédemment, il faut également Générer une nouvelle clé privée.

Extensions

Puisqu'il s'agit d'un certificat pour un serveur, nous devons également configurer l'onglet suivant, Extensions car celles-ci seront utilisées pour valider les communications.

Comme nous l'avons dit à propos du champ CommonName, il faut maintenant utiliser une extension pour spécifier le nom de votre site :

xca ouvre alors un pop-up qui nous permet d'ajouter les extensions. Ici, nous n'allons ajouter qu'une seule entrée DNS, mais suivant votre situation, vous pouvez en mettre plusieurs, y compris des adresses IP.

Cliquer sur Appliquer pour prendre en compte l'extension.

Vu que nous n'avons pas besoin de paramètres supplémentaires pour ce certificat, cliquez sur ok.

Exporter

À ce stade, les certificats et les clés n'existent que dans la base de donnée de xca que vous avez créée. Il est donc temps de les exporter pour pouvoir les inclure dans vos logiciels.

Les certificats

Depuis l’application, dans l’onglet Certificats, cliquez sur le bouton Exporter.

Liste des certificats

Liste des certificats

xca ouvre un popup qui vous demande quelques paramètres pour l’export :

Cliquez ensuite sur OK pour que xca exporte votre certificat dans le fichier. Vous pourrez ensuite le déployer :

Les clés

Depuis l’application, dans l’onglet Clés privées, cliquez sur le bouton Exporter.

Comme précédemment, xca ouvrira un pop-up pour personnaliser l’export.

Cliquez ensuite sur OK pour que xca exporte votre clé privée dans le fichier.

⚠️ Ce fichier doit être stocké de manière sécurisée car quiconque en prend connaissance peut vous usurper (signer ses propres certificats, intercepter vos communications, …).

Pour notre exemple, seule la clé du serveur a de sens à être exportée puis copiée sur le serveur correspondant. La clé de la CA ne servant qu’à signer les certificats, n’a pas besoin d’être exportée. Si vous souhaitez effectuer une copie de sauvegarde, copiez la base de donnée plutôt que les exports.

Et Après ?

C'est quoi une PKI ?

19 septembre 2019 À force d'en parler, c'est presque devenu un buzzword vide de sens. Démystifions donc ce concept pour voir ce qu'il apporte et comment s'en servir à propos.

Utiliser ses propres certificats avec Ubuntu Landscape

3 Octobre 2019 Ubuntu Landscape est un outil très pratique pour maintenir à jour son parc de machines Ubuntu. Mais qu'il utilise nos certificats plutôt que ses auto-signés, ça serait mieux.

Cryptologie en général

Science du secret, dont l'objet principal est la protection des correspondances et autres communications.


  1. Ce qui est conforme à la section 2.3 des recommandations de l'ANSSI.

  2. Dont vous trouverez la justification dans la section 2.2.1.1 des recommandations de l'ANSSI. Bien qu'aucune clé de moins de 1024 bits n'ait été publiquement factorisée à ce jours, l'ANSSI considère qu'ajouter une marge est nécessaire pour rester prudent.