'

Outils pour utilisateurs

Outils du site


doc:xca

une (petite) infrastructure à clés publiques avec xca

Cet article n'a pas pour but de décrire le principe d'une autorité de certification ou d'une infrastructure à clés publiques mais si vous ne savez pas ce que c'est, la suite risque de ne pas être très utile.

Les certificats créés seront ensuite utilisés pour une authentification forte mutuelle entre un serveur web et un navigateur.

Si vous avez des avis, remarques, etc. sur cet article, les commentaires sont ouverts (mais modérés).

xca

xca est un logiciel de gestion de certificats au format X.509, de requêtes de certification et de clés privées au format Rivest Shamir Adleman et Digital Signature Algorithm. C'est un logiciel libre sous licence BSD.

xca permet de mettre en place une autorité de certification facilement. Par rapport à d'autres logiciels comme gnomint, xca est plus complet, il permet de modifier plus d'options dans les certificats. Il existe également TinyCA, que vous pourrez utilisez grâce à ce tutoriel (en français).

xca est empaqueté par DEBIAN mais uniquement pour SID au moment de la rédaction de cet article. Il nécessite la bibliothèque Qt. Il est disponible en anglais, allemand et espagnol, le développeur accepte très probablement les coups de main pour la traduction ;-) .

Cet article ne détaillera pas toutes les options et utilisations possibles de ce logiciel, loin de là.

création de l'autorité de certification

Quelques captures d'écrans pour décrire ce processus seront bien plus efficaces que de trop longues explications.

Dans l'onglet « Certificates », cliquer sur « New Certificate ».

Ici, la seule modification concerne l'algorithme de signature qui passe de la valeur par défaut SHA-1 à SHA-256 pour plus de robustesse.

:!: ne cliquez pas sur « OK » avant d'avoir remplit tous les onglets !

Il est maintenant nécessaire de renseigner les cases proposées suivant vos spécificités. N'ayant pas de clef privée, il est possible de demander à xca d'en générer une.

Pour la génération de la clef, il faut donner un nom (repris apr défaut du champ «internal name » ci-dessus), il est possible de choisir la taille : 1024, 2048 ou 4096, tout dépend de son niveau de paranoïa. Il faut également choisir entre RSA et DSA (des arguments en faveur de l'un ou de l'autre ?).

L'onglet « extensions » demande de choisir le but du certificat (« Certificate Authority » ou « End entity ») et sa durée de vie, par défaut un an. On cherche à créer une autorité de certification, il faut donc choisir « Certificate Authority » dans le champ « Type ». Les autres champs sont laissés vide dans cet exemple.

L'onglet « Key Usage » est important, suivant les usages, le certificat pourra être utilisé ou pas dans diverses situations.

L'extension Netscape est probablement optionnelle, à défaut, le choix « SSL CA » semble approprié.

L'onglet « Advanced » récapitule les données sur certificat X.509 qui sera généré. Il doit être également possible d'éditer « à la main » les données en cliquant sur « Edit » (non testé).

Le certificat peut-être exporter au format DER (Privacy Enhanced Mail pour être ensuite importer dans un navigateur web. De cette manière, les serveurs qui utiliseront un certificat signé par cette autorité seront reconnu par le navigateur sans alerte de sécurité.

création d'un certificat pour un serveur web

Il est possible de générer la clef et la demande de certificat sur le serveur web. Dans la suite, la clé sera générée par xca et transmise au serveur web via SSH.

Avant de pouvoir créer un certificat accepté par Firefox, j'ai créé deux fichiers pour xca afin d'ajouter des extensions conformément à la documentation.

$ cat /home/sylvain/.xca/oids.txt 
1.3.6.1.5.5.7.3.1:serverAuth:TLS Web Server Authentication
1.3.6.1.5.5.7.3.2:clientAuth:TLS Web Client Authentication
$ cat /home/sylvain/.xca/eku.txt 
serverAuth
clientAuth

Dans l'onglet « Certificates », cliquer avec le bouton droit sur le certificat de l'autorité de certification puis cliquer sur « New Certificate ».

Sur l'onglet « Source », il faut choisir l'autorité de certification qui signera le certificat, ici « CA ». Comme précédemment, j'ai préféré l'algorithme SHA-1. Il est également possible de choisir un modèle (« template ») pour pré-remplir certains éléments.

Dans l'onglet « Subject », on renseigne les attributs du serveur. La clé privée peut soit être choisie dans la liste soit générée (dans ce cas, la même boite de dialogue que précédemment devra être renseignée).

Cette fois il faudra choisir « End Entity » dans l'onglet « Extensions », ce n'est pas une autorité de certification. La date de validité sera renseignée suivant la convenance. Le champ « subject alternative name » permet de définir plusieurs noms de serveur (serveur1.fr, www.serveur1.fr, serveur1.com, etc.)

Les utilisations seront renseignées dans l'onglet « Key Usage ». Il est important de bien choisir les paramètres car sans cela certains navigateurs n'accepteront pas le certificat.

L'onglet « Netscape » est probablement optionnel mais autant choisir un paramètre cohérent.

Pour utiliser la clé et le certificat dans le serveur web, il faut les exporter. Dans l'onglet « Private Keys », cliquez avec le bouton droit sur la clé et choisir « Export ». Choisir le format « PEM » utilisable par apache, par exemple.

Pour exporter le certificat, dans l'onglet « Certificates », choisir « Export » puis « File » dans le menu qui apparaît en cliquant sur le bouton droit. Ici encore, il faut choisir un format reconnu par le serveur web.

création d'un certificat pour un navigateur

La création de ce certificat est identique au paragraphe précédent. Seules les extensions diffèrent.

Pour que la navigateur puisse prendre en compte le certificat, il est nécessaire de l'exporter. Le format PKCS#12 est reconnu par plusieurs navigateur.

© 2009-2013 – Sylvain Collilieux – Ce texte est sous licence Creative Commons Attribution 3.0 non transposée


Discussion

patrice, Le 05/06/2012 à 17:14

Bonjour,

Merci pour cet article très claire et bien écrit.

j'aimerais te demander quel paramétrés choisir Dans les onglets “Extensions et key usage” pour créer un certificat SSL pour authentifier un poste client ou user sur un serveur. concrètement j’essaie de mettre en place la solution RDS Gateway de Microsoft. Cette solution a besoin de certificat pour crypter le flux du client au serveur Gateway. j'aimerais creer un certificat pour le client qui se connecte a ce serveur et un certificat pour mon serveur Gateway.

je te remercie par avance.

Sylvain Collilieux, Le 06/06/2012 à 00:31

Bonjour,

Je ne connais pas la solution que tu décris. Comme ce site le montre probablement, si je ne peux pas utiliser, étudier, modifier et copier le logiciel, je ne lui porte pas un grand intérêt ;-). Le fonctionnement HTTPS doit être assez proche de ton besoin. Il faut tester…

– Sylvain

EL GAMALI Abdennasser, Le 04/10/2012 à 12:37

Bonjour,

Merci infiniment pour ce tuto académique.

Nous avons essayé à plusieurs reprise à générer un certificat pour la dédié à la signature d'exécutable mais en vin.

Auriez vous l’obligeance de nous faire un toto claire pour générer un certificat dédié à la signature d'exécutable.

Merci pour votre aide et compréhension.

Sylvain Collilieux, Le 04/10/2012 à 22:47

Bonjour,

Je ne documente que ce que je fais et je n'ai pas besoin de signer des exécutables.

Ce texte est libre, vous pouvez donc le modifier et l'enrichir suivant vos besoins dans le respect de la licence.

– Sylvain

Entrer votre commentaire. La syntaxe wiki est autorisée:
169 +15 = ?
 
doc/xca.txt · Dernière modification: Le 07/01/2015 à 23:52 (modification externe)