====== une (petite) infrastructure à clés publiques avec xca ====== Cet article n'a pas pour but de décrire le principe d'une [[wp>autorité de certification]] ou d'une [[wp>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 [[doc:apache2#configuration_ssl|serveur web]] et un navigateur. Si vous avez des avis, remarques, etc. sur cet article, les commentaires sont ouverts (mais modérés). Si cette page vous a été utile ? ~~PAYPAL~~ ===== xca ===== [[http://xca.sourceforge.net|xca]] est un logiciel de gestion de certificats au format [[wp>X.509]], de requêtes de certification et de clés privées au format [[wp>Rivest Shamir Adleman]] et [[wp>Digital Signature Algorithm]]. C'est un logiciel libre sous [[wp>licence BSD]] :-( ([[http://www.framablog.org/index.php/post/2009/11/13/pourquoi-j-utilise-la-licence-gpl|pour les explications de la tronche]]). [[http://xca.sourceforge.net/|xca]] permet de mettre en place une autorité de certification facilement. Par rapport à d'autres logiciels comme [[http://gnomint.sourceforge.net/|gnomint]], [[http://xca.sourceforge.net/|xca]] est plus complet, il permet de modifier plus d'options dans les certificats. Il existe également [[http://tinyca.sm-zone.net/|TinyCA]], que vous pourrez utilisez grâce à [[http://irp.nain-t.net/doku.php/270crypt:030_application|ce tutoriel]] (en français). [[http://xca.sourceforge.net/|xca]] est [[http://packages.debian.org/xca|empaqueté par DEBIAN]] mais uniquement pour SID au moment de la rédaction de cet article. Il nécessite la bibliothèque [[wp>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 ». {{:doc:screenshot_003.png|}} Ici, la seule modification concerne l'algorithme de signature qui passe de la valeur par défaut [[wp>SHA-1]] à [[wp>SHA-256]] pour [[http://fr.wikipedia.org/wiki/SHA-1#Attaques|plus de robustesse]]. :!: ne cliquez pas sur « OK » avant d'avoir remplit tous les onglets ! {{:doc:capture_010.png|}} 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. {{:doc:capture_011.png|}} 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. {{:doc:xca_extension.png|}} L'onglet « Key Usage » est important, suivant les usages, le certificat pourra être utilisé ou pas dans diverses situations. {{:doc:ca_key_usage.png|}} L'extension Netscape est probablement optionnelle, à défaut, le choix « SSL CA » semble approprié. {{:doc:ca_extension_netscape.png|}} L'onglet « Advanced » récapitule les données sur certificat [[wp>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é). {{:doc:ca_advanced.png|}} Le certificat peut-être exporter au format DER ([[http://en.wikipedia.org/wiki/X.509#Certificate_filename_extensions|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 à [[http://xca.sourceforge.net/xca-11.html|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. {{:doc:serveur_source.png|}} 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). {{:doc:serveur_subject.png|}} 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.) {{:doc:serveur_extensions.png|}} 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. {{:doc:serveur_key_usage.png|}} L'onglet « Netscape » est probablement optionnel mais autant choisir un paramètre cohérent. {{:doc:serveur_netscape.png|}} 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. {{:doc:key_export.png|}} 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. {{:doc:certificate_export.png|}} ===== 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. {{:doc:client_key_usage.png|}} Pour que la navigateur puisse prendre en compte le certificat, il est nécessaire de l'exporter. Le format [[wp>PKCS#12]] est reconnu par plusieurs navigateur. --- //Le 24/11/2009 -- Sylvain Collilieux -- Ce texte est sous licence [[http://artlibre.org/licence/lal/|Art Libre]]// ---- Cette page vous a été utile ? ~~PAYPAL~~ ~~DISCUSSION~~