Créer une PKI avec XCA

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 avec XCA.

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.

KonradDaniel @ pixabay

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...

Après avoir installé XCA et créé une base de donnée spécifique, on va créer deux certificats (un pour la racine et un pour le serveur). Bonus, on vous montre aussi comment exporter les certificats et les clés.

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.

Mots de passe pour la base de données.
Mots de passe pour la base de données.

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é

Les autres champs n’ont qu’un but informatif (détailler l’identité du propriétaire du certificat). Ils sont obligatoires lorsqu’on veut faire signer un certificat par une autorité mais comme vous créez la votre, faite comme vous le sentez.

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 :

Vous trouverez la justification des 3072 bits 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.

Nouvelle clé
Nouvelle clé

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

La clé est créée
La clé est créée

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

Le certificat est créé
Le certificat est créé

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 mais sur l’extension « Subject Alternative Name ». Pour vous faciliter la tâche, XCA copie automatiquement votre CN dans cette extension.

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

Comme nous l'avions abordé précédemment, les navigateurs récents ne se basent plus sur le CommonName (CN) mais sur l’extension Subject Alternative Name (SAN) pour vérifier que le certificat reçu correspond au cite contacté.

Si votre certificat n’est créé que pour un seul domaine, XCA vous a déjà copié le CN dans l’extension SAN, vous n’avez donc rien à ajouter et pouvez sauter cette étape.

Si votre serveur est configuré pour répondre à plusieurs domaines (i.e. example.com - pour les utilisateurs qui oublient le www), vous devez l’ajouter spécifiquement.

Extensions, dont le nom alternatif
Extensions, dont le nom alternatif

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.

Remarquez la case cochée en haut à droite « Copier le nom commun » qui, comme son nom l’indique, copie le CommonName, vous évitant de devoir l’ajouter manuellement.

Configuration du SAN
Configuration du SAN

Cliquer sur Appliquer pour prendre en compte l'extension.

Retour aux extension, le SAN est mis à jour
Retour aux extension, le SAN est mis à jour

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

Le certificat est créé
Le certificat est créé

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 :

Exportation du certificat
Exportation du certificat

Cliquez ensuite sur OK pour que xca exporte votre certificat dans le fichier.

Les clés

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

Liste des clés
Liste des clés

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

Exportation de la clé privée
Exportation de la clé privée

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, …).

Et après ?

Vous voici l’heureux propriétaire de votre propre autorité de certification (votre certificat racine et sa clé privée) qui vous a permis de signer le certificat d’un serveur web. Vous pouvez répéter cette opération pour peupler votre PKI de toujours plus de certificats.

Pour l’utiliser, il ne vous reste plus qu’à déployer les fichiers exportés :

Si vous souhaitez effectuer une copie de sauvegarde, le plus pratique est encore de sauvegarder le fichier de la base de donnée. Et si vous voulez spécifiquement sauvegarder un certificat et sa clé, exportez les deux au format PKCS .p12.