Infrastructures à clé publique et certificats

Rubrique : cryptographie, PKI, OpenSSL, certificat, X.509, SSL, sécurité informatique.

Description et origine des PKI

Lors de l’utilisation de la cryptographie à clé publique, chaque utilisateur (qui peut être une personne ou un serveur) possède une paire de clés privée et publique. Afin que l’on puisse l’identifier, un utilisateur doit distribuer ou mettre à disposition sa clé publique auprès de tout le monde.

Une PKI (Public Key Infrastructure) — ou IGC (infrastructure de gestion de clés) en français — permet de mettre à disposition sur un serveur les clés publiques des utilisateurs.

Mais, dans ce cas, se pose le problème de savoir à qui appartient telle ou telle clé publique. Comment rattacher la clé publique — qui est une chaîne binaire — à son propriétaire ?
La solution est, non pas de distribuer des clés, mais des certificats numériques contenant ces clés. Un certificat numérique est un fichier qui contient la clé publique d’un utilisateur et son état civil (nom, prénom, adresse, adresse électronique, …). Afin d’être reconnu comme valide et authentique, ce certificat doit être signé par un certificat de confiance de l’autorité de certification (AC), qui est appelé « certificat d’AC racine ».
Mais comment reconnaître à son tour ce certificat d’AC racine comme valide et authentique ?
Pour cela, le certificat d’AC racine se signe lui-même : on dit qu’il est autosigné.

Donc, une PKI est une infrastructure qui comprend des serveurs et des certificats et qui met à disposition ses certificats numériques. La norme la plus courante de certificats numériques est la norme ITU-T X.509.

Qu’est-ce qu’une autorité de certification ?
Une autorité de certification — CA pour Certificate Autority en anglais — est l’entité juridique représentant un tiers de confiance.

Une PKI peut être formée d’un seul certificat d’AC racine (Root CA certificate) :

PKI formée d’un certificat d’AC racine

Les différents types de certificats

Il existe deux grandes familles de certificats à clé publique :

  • les certificats d’autorité de certification (en abrégé « certificats d’AC ») ;
  • les certificats d’entités finales (également appelés « certificats finaux »).
Les types de certificats d’AC (dans un modèle hiérarchique)
Type Description
AC racine Une AC racine est représentée par un certificat auto-signé.
AC subordonnée Une AC subordonnée est représentée par un certificat émis par une autre AC.
Quelques types de certificats finaux
Type Usage
Serveur SSL Mise en œuvre d’un serveur web sécurisé en SSL (cadenas du navigateur fermé), afin d’authentifier le serveur et de chiffrer les données.
Utilisateur Authentification forte (e.g. pour un extranet), signature et/ou chiffrement de courriel (e.g. selon la norme S/MIME).
Signature de code Garantir l’intégrité et l’authenticité d’un code exécutable ou d’un fichier binaire (e.g. applications, applets Java, paquets tar.gz/RPM/DEB).

Mettre en œuvre sa propre PKI

Outils de tests

Outils de mise en œuvre manuelle d’une PKI expérimentale :

  • OpenSSL, outil Open Source en ligne de commande ;
  • XCA, outil graphique Open Source s’appuyant sur OpenSSL (pour GNU/Linux, Windows, Mac OS).

Applications industrielles

Applications de PKI à déployer pour une mise en œuvre en entreprise :

  • EJBCA, PKI en Open Source, sous licence libre (GNU Lesser GPL v2.1) ;
  • OpenCA, PKI en Open Source, sous licence Apache.

Ressources et outils

Outils pour GNU/Linux

OpenSSL
http://www.openssl.org/source/
Apache
http://www.apache.org/dist/httpd/
Mod_SSL
http://www.modssl.org/source/
XAMPP (Apache, MySQL, PHP and Perl) pour Linux
http://www.apachefriends.org/en/xampp-linux.html

Outils pour Windows

Cygwin (environnement GNU/Linux sous Windows)
http://www.cygwin.com/
http://cygwin.cict.fr/release/openssl/
Win32 OpenSSL (Shining Light Productions)
http://www.slproweb.com/products/Win32OpenSSL.html
XAMPP (Apache, MySQL, PHP and Perl) pour Windows
http://www.apachefriends.org/en/xampp-windows.html
Une description complète de tous les processus se trouve dans mon livre PKI Open Source (ISBN 2-84177-235-7) publié en français aux Éditions O’Reilly.