GROUPEMENT D INTERET PUBLIC GENERATION & INTEGRATION DES CERTIFICATS SSL GIP-CPS DANS APACHE 1.3.x & IIS 18 Août 2004 Réf : intégration_certificatssl_gip_v1.0.doc 18 Août 2004 Document GIP "CPS" Page 1 /
Table des matières 1 Génération d une requête de certificat SSL (GIP-CPS)... 3 1.1 Fichier de configuration exemple GIPCONF.cnf... 3 1.2 Génération du CSR (PKCS#10)... 4 1.3 La certification GIP-CPS... 4 2 Installation dans APACHE/LINUX... 5 2.1 Introduction... 5 2.2 Conditions préalables... 5 2.3 Installation... 6 2.3.1 OpenSSL... 6 2.3.2 Application du patch sur les sources de mod_ssl... 7 2.3.3 Apache et de mod_ssl... 8 2.3.4 Mise à jour de mod_ssl... 10 2.3.5 Installation de la chaîne de confiance GIP-CPS... 11 2.4 La gestion des CRL.... 12 2.5 L authentification d accès carte CPS... 13 3 Installation d un certificat GIP-CPS pour IIS...14 3.1 Installation des clés (privé/certificat) dans Win2000.... 14 3.2 Configuration de IIS 5 pour Windows 2000/XP... 18 Août 2004 Document GIP "CPS" Page Page 2 / /
1 Génération d une requête de certificat SSL (GIP-CPS) Elaboration d'une demande de certificat serveur conforme au format requis par l'igc GIP"CPS" ; On utilisera l outil Openssl. Demande de certificat Pour générer des demandes de certificats on utilise un fichier de configuration adapté au format de la demande à émettre. Ce fichier peut être fourni par le GIP-CPS ou bien recréé en suivant les règles ci-dessous. Pour cela, un paramètre de la commande "Openssl req" permet de spécifier un fichier de configuration autre que celui par défaut (openssl.cnf). 1.1 Fichier de configuration exemple GIPCONF.cnf Le contenu est le suivant : [ req ] default_bits = 1024 distinguished_name = req_distinguished_name string_mask = nombstr req_extensions = req_csr_extensions [ req_distinguished_name ] countryname = Pays countryname_default = FR organizationname = Organisation organizationname_default = GIP-CPS localityname = Departement (numero) localityname_default = Paris (75) organizationalunitname = Identifiant structure organizationalunitname_default = 318003000900013 commonname = nom d-application commonname_default = essai-p10.gip-cps.fr 18 Août 2004 Document GIP "CPS" Page Page 3 / /
1.2 Génération du CSR (PKCS#10) Génération de la demande de certificat - Openssl req -config GIPCONF.cnf -new -key SITEWEB.key -out SITEWEB.csr -sha1 Le fichier de configuration est celui proposé plus haut. Le fichier de clé généré précédemment a été déposé dans le fichier SITEWEB.key, il en résulte un fichier de demande SITEWEB.csr au format PEM (format TXT) L'ordre proposé pour l'entrée des éléments de DN est significatif pour la demande en sortie ; ce qui permet en principe de constituer un DN conforme aux spécifications GIP "CPS". ATTENTION, concernant le champ L, le nom de département et le code de département sont séparés par un "blanc" (le champ proposé dans l'exemple de fichier de configuration est à cet égard valide). A partir du numéro de structure de l'établissement, on compose l'attribut "OU" du DN en ajoutant en tête un digit de type, comme suit (// étant le signe de concaténation) : 0 // numéro ADELI/Rang 1 // numéro FINESS 2 // numéro SIREN 3 // numéro SIRET Ainsi par exemple, le numéro de SIRET du GIP-CPS "18003000900013" donne comme OU "318003000900013" 1.3 La certification GIP-CPS La requête de certificat obtenue dans le fichier SITEWEB.CSR doit être envoyée au GIP-CPS (service industriel autorite@certif.gip-cps.fr) pour qu elle soit certifiée par l autorité de certification. Le certificat ainsi généré est publié dans l annuaire du GIP-CPS sous 24h. Il a une période de validité de 1 an. 18 Août 2004 Document GIP "CPS" Page Page 4 / /
2 Installation dans APACHE/LINUX 2.1 Introduction Pour satisfaire les besoins d'authentification du GIP-CPS, le module mod_ssl du serveur Web Apache a été modifié de façon à combler une lacune de ce module et de la bibliothèque cryptographique OpenSSL par rapport aux RFC normalisant les protocoles d'authentification par certificat. Ce document présente le mode opératoire pour appliquer ce patch et installer ensuite le module sur une plate-forme GNU/Linux. 2.2 Conditions préalables Outils nécessaires à l'application du patch et à la compilation L'installation préalable des composants suivants est requise : glibc (bibliothèque GNU C et fichiers d'entêtes associés) ; binutils (collection d'outils pour assembler et manipuler des fichiers objets et autres binaires exécutables) ; gcc (chaîne de compilation C/C++ standard du projet GNU) ; make (utilitaire de calcul de dépendance et d'exécution conditionnelle de commandes) ; tar (utilitaire d'archivage de fichiers) ; gzip (utilitaire de compression de fichier) ; patch (utilitaire d'application de patch) ; perl (interpréteur du langage de script Perl). Freecell (utilitaire d attente à recompiler sous linux ;-) Archives de sources Pour installer un serveur Apache utilisant le module mod_ssl vous devez télécharger les archives de sources de : OpenSSL 0.9.6g Apache 1.3.27 mod_ssl 2.8.12 Les numéros de version qui précèdent sont des versions minima pour OpenSSL, Apache et mod_ssl car le patch livré a été construit sur la base de ces versions. Attention les versions de mod_ssl sont plus ou moins liées à une version de Apache (ainsi mod_ssl 2.8.12 est prévu pour fonctionner avec Apache 1.3.27). Privilèges Afin d'installer sans encombre les différents logiciels requis et d'effectuer toutes les tâches d'administration système qui s'imposent, vous devez posséder les droits d'administrateur sur votre machine. Autrement dit, vous pouvez vous connecter en tant que «root». 18 Août 2004 Document GIP "CPS" Page Page 5 / /
2.3 Installation Dans ce qui suit, nous supposerons l'existence d'un répertoire de travail nommé ~/src/ sur lequel vous avez tous les droits (écriture, lecture et exécution). Les sources téléchargés seront stockés, décompressés et compilés dans ce répertoire. 2.3.1 OpenSSL Si votre système dispose déjà d'une version installée de la bibliothèque de développement et des outils OpenSSL, vous pouvez ignorer cette étape et passer directement à la suivante. Dans le cas contraire, voici la marche à suivre : 1. Téléchargez l'archive de sources openssl-0.9.6g.tar.gz sur le site de référence du projet http://www.openssl.org et copiez la dans le répertoire de travail ~/src/. 2. Placez-vous dans le répertoire de travail et décompressez l'archive de sources : $ cd ~/src $ tar xzf openssl-0.9.6g.tar.gz $ 3. Les sources du projet sont alors décompressés dans le répertoire ~/src/openssl-0.9.6g/. 4. Placez-vous dans le répertoire des sources d'openssl, lancez le script de configuration puis la compilation : $ cd openssl-0.9.6g $./config $ make [...défilement des messages d'exécution...] Pour finir, vous devez installer l'application et les fichiers associés. $ make install [...défilement des messages d'exécution...] OpenSSL est installé et ses bibliothèques peuvent être utilisées par d'autres programmes. 18 Août 2004 Document GIP "CPS" Page Page 6 / /
2.3.2 Application du patch sur les sources de mod_ssl Le patch GIP-CPS pour MODSSL fourni se présente sous la forme d'un fichier nommé mod_ssl-gipcps.patch.gz. Grâce à l'utilitaire de même nom (patch), ce patch s'applique aux sources de mod_ssl en toute simplicité, modifiant et ajoutant tous les fichiers nécessaires en une seule commande. Le mode opératoire est le suivant : 1. Téléchargez l'archive de sources mod_ssl-2.8.12-1.3.27.tar.gz sur le site de référence du projet http://www.modssl.org et copiez la dans le répertoire de travail ~/src/. 2. Placez-vous dans le répertoire de travail et décompressez l'archive de sources : $ cd ~/src $ tar xzf mod_ssl-2.8.12-1.3.27.tar.gz $ 3. Les sources du projet sont alors décompressés dans le répertoire ~/src/mod_ssl-2.8.12-1.3.27/. 4. Copiez le patch mod_ssl-gipcps.patch.gz dans le répertoire de travail ~/src/ et décompressez le : $ gunzip mod_ssl-gipcps.patch.gz $ 5. Vous obtenez un fichier prêt à l'emploi nommé mod_ssl-gipcps.patch 6. Appliquez ce patch sur les sources de mod_ssl : $ cd mod_ssl-2.8.12-1.3.27 $ patch -p1 < mod_ssl-gipcps.patch $ Les sources de mod_ssl sont désormais patchés et nous pouvons reprendre le cours normal de l'installation du serveur Apache avec le module mod_ssl lié dynamiquement. 18 Août 2004 Document GIP "CPS" Page Page 7 / /
2.3.3 Apache et modssl L'utilisation de mod_ssl en tant que module chargé dynamiquement nécessite à son tour le patch des sources d'apache. Cette manipulation est native dans la procédure d'installation du module mod_ssl. Les installations d'apache et de mod_ssl doivent donc être menées conjointement, en enchaînant les opérations dans un ordre strict. 1. Téléchargez l'archive de sources apache_1.3.27.tar.gz sur le site de référence du projet http://www.apache.org et copiez la dans le répertoire de travail ~/src/. 2. Placez-vous dans le répertoire de travail et décompressez l'archive de sources : $ cd ~/src $ tar xzf apache_1.3.27.tar.gz $ 3. Les sources du projet sont alors décompressés dans le répertoire ~/src/apache_1.3.27/. 4. Placez-vous dans le répertoire de sources du module mod_ssl (oui, vous avez bien lu, mod_ssl, pas apache...) pour patcher les sources du serveur. Pour l'occasion, mod_ssl construit et utilise sa propre version de l'utilitaire patch. Par ailleurs, vous devez indiquer au script où se trouvent les sources d'apache via l'option --with-apache de la ligne de commande : $ cd mod_ssl-2.8.12-1.3.27 $./configure --with-apache=../apache_1.3.27 $ 5. Les sources d'apache sont maintenant prêts pour la compilation et l'utilisation du module mod_ssl. 6. Placez-vous maintenant dans le répertoire de sources du serveur Apache pour configurer et lancer la compilation. Vous devez spécifier sur la ligne de commande le répertoire d'installation du serveur Apache (--prefix). Vous devez aussi indiquer la liste des modules que vous souhaitez inclure (option --enable-module) et, parmi eux, la liste de ceux compilés sous forme de bibliothèques dynamiques (option --enable-module). 18 Août 2004 Document GIP "CPS" Page Page 8 / /
Si vous voulez installer le serveur Apache dans le répertoire /usr/local/apache et ne souhaitez inclure que le module mod_ssl, la ligne de commande est (le caractère anti-slash «\» en fin de ligne ne doit pas être saisi, il indique juste que la commande se poursuit à la ligne suivante) : $ cd ~/src/apache_1.3.27 $./configure --prefix=/usr/local/apache \ --enable-module=ssl \ --enable-shared=ssl $ 7. Vous devez ensuite lancer la compilation d'apache : $ make Vous allez ensuite intégrer votre clé privée/certificat. Vous devez préciser au script que les éléments existent déjà et indiquer leur emplacement. Maintenant, si vous possédez le biclé et le certificat GIP-CPS, vous indiquez votre intention (option TYPE=existing) et leur emplacement (options KEY et CRT) sur la ligne de commande, le reste se fera automatiquement. Par exemple, supposons que votre biclé soit dans le fichier ~/certs/server/siteweb.key et que votre certificat soit dans le fichier ~/certs/server/siteweb.crt. Vous devez taper la ligne de commande (le caractère anti-slash «\» en fin de ligne ne doit pas être saisi, il indique juste que la commande se poursuit à la ligne suivante) : $ make certificate TYPE=existing \ KEY=~/certs/server/SITEWEB.key \ CRT=~/certs/server/SITEWEB.crt $ 18 Août 2004 Document GIP "CPS" Page Page 9 / /
8. Pour finir, vous devez installer l'application et les fichiers associés. Vous devez taper les commandes : $ make install [...défilement des messages d'exécution...] $ Le serveur est maintenant installé et prêt à l'emploi. Avant de le lancer, vous devez cependant le configurer (la configuration intégrale du serveur Apache est un vaste sujet qui sort du cadre de ce document). Une fois cette configuration réalisée, vous pouvez lancer le serveur Apache via la ligne de commande suivante : $ /usr/local/apache/bin/apachectl startssl Le serveur doit démarrer sans encombre. Lorsque vous souhaitez l'arrêter, taper la commande : $ /usr/local/apache/bin/apachectl stop 2.3.4 Mise à jour de mod_ssl Pour information, si vous souhaitez mettre à jour par la suite le module mod_ssl, il est inutile de reproduire toutes les manipulations qui précèdent. Après avoir «patché» les sources de mod_ssl pour inclure la modification apportée, placez-vous dans le répertoire de sources du module et tapez les commandes suivantes : $./configure --with-apxs=/usr/local/apache/bin/apxs $ make $ make install [...défilement des messages d'exécution...] $ make distclean La dernière commande nettoie le répertoire de sources pour éviter une pollution éventuelle lors d'une future utilisation. 18 Août 2004 Document GIP "CPS" Page Page 10 / /
2.3.5 Installation de la chaîne de confiance GIP-CPS Cette action consiste à installer dans le serveur web apache la chaîne de confiance du GIP- CPS pour valider l authentification d accès CPS et l intégration de votre certificat SSL GIP- CPS. Les chaînes de confiances sont stockées sur le serveur dans le repertoire /usr/local/conf/ssl.crt/ sous 2 formes : Concaténées dans le fichier ca.crt & ca-bundle.crt. Séparées avec l extension.crt (on applique la commande «make» sur ce répertoire pour indexer les certificats) Vous pouvez procéder comme ci-dessous : 1. Récupérer, au format PEM, l ensemble des certificats AC-ROOT, AC-CLASSE-0, AC-CLASSE- 1, AC-CLASSE-2, AC-CLASSE-3, AC-CLASSE-4 etc.. sur le site web éditeurs. http://editeurs.gip-cps.fr 2. Si vous mettez en œuvre la gestion des listes de revocation (CRL), pensez aussi à télécharger et installer les certificats AC-ROOT-CRL, AC-CLASSE-0-CRL, AC-CLASSE-1-CRL, AC- CLASSE-2-CRL, AC-CLASSE-3-CRL, AC-CLASSE-4-CRL etc.. 3. placer ces certificats dans le répertoire /usr/local/conf/ssl.crt/ et taper «MAKE» 4. Editer le fichier de configuration httpd.conf qui doit se trouver dans /usr/local/conf/ et vérifier les lignes : $ vi httpd.conf SSLCertificateFile /usr/local/apache/conf/ssl.crt/siteweb.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/siteweb.key SSLCertificateChainFile /usr/local/apache/conf/ssl.crt/ca.crt SSLCACertificatePath /usr/local/apache/conf/ssl.crt SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca-bundle.crt 5. et relancer le serveur : /usr/local/apache/bin/apachetcl startssl 18 Août 2004 Document GIP "CPS" Page Page 11 / /
2.4 La gestion des CRL. Scripts de chargement des CRLs Les scripts getallcrl.sh et get-crl.pl sont fournis pour télécharger les listes de révocation à partir de l'annuaire du GIP-CPS. Pour utiliser les scripts il faut les recopier dans un répertoire exécutable (comme /usr/bin), disposer de l'interpréteur Perl et des programmes clients LDAP d'openldap (http://www.openldap.org). Avant d'exécuter les scripts il faut créer un répertoire temporaire, qui servira de cache local pour les CRL, par exemple "/usr/local/apache/conf/ssl.crl/cache". Il faut lancer régulièrement le téléchargement (la fréquence doit être calquée sur la publication des CRLs) : getallcrl.sh /usr/local/apache/conf/ssl.crl/cache \ /usr/local/apache/conf/ssl.crl/ca-bundle.crl Attention, les CRL doivent impérativement être mises à jour avant leur expiration sous peine de voir le serveur apache refuser toutes les connections. Modification à apporter à la configuration d'apache Pour configurer apache dans le cadre GIP-CPS, vous trouverez ci-dessous les extraits d'un exemple de fichier httpd.conf. $ vi httpd.conf # Certificate Revocation Lists (CRL): # Recommandé : à activer pour tenir compte des listes de révocation. SSLCARevocationFile /usr/local/apache/conf/ssl.crl/ca-bundle.crl 18 Août 2004 Document GIP "CPS" Page Page 12 / /
2.5 L authentification d accès carte CPS Pour activer l authentification du client (Librairie crypto + carte CPS) vous devez vérifier que votre fichier de configuration apache (httpd.conf) possède bien ces 2 lignes : $ vi httpd.conf SSLVerifyClient require # (active l authent. X509) SSLVerifyDepth 4 # (profondeur de la chaîne de confiance) SSLVerifyClient Attention : La valeur «require» semble ne pas fonctionner avec WebPass car ce dernier semble avoir des difficultés lors des renégociations. SSLVerifyDepth Valeur recommandée : "4". Cette valeur tient compte de la hiérarchie de certification actuelle du GIP-CPS 18 Août 2004 Document GIP "CPS" Page Page 13 / /
3 Installation d un certificat GIP-CPS pour IIS Remarque : La console d administration de Internet Information Server 5 de Microsoft ne permet de générer que des requêtes de certificats X509 possédant le champ STATE. Ce champ n existe pas dans les certificats CLASSE-5 délivrés par le GIP-CPS et ne doit pas être présent, même vide. Pour générer un certificat conforme GIP-CPS référez vous à la section 1.2 de ce document. 3.1 Installation des clés (privé/certificat) dans Win2000. Le GIP-CPS vous a délivré un certificat pour votre serveur. Pour l installer sur votre plateforme afin d être intégré dans IIS 5, vous devez suivre la procédure suivante : 1. Lancer le logiciel CONSOLE Microsoft (mmc.exe) 2. Sélectionner le menu «Fichier» -> «Ajouter/supprimer un composant logiciel enfichable» 18 Août 2004 Document GIP "CPS" Page Page 14 / /
18 Août 2004 Document GIP "CPS" Page Page 15 / /
3. Ajouter un nouveau composant «Certificat» pour «Le compte de l ordinateur» 18 Août 2004 Document GIP "CPS" Page Page 16 / /
18 Août 2004 Document GIP "CPS" Page Page 17 / /
4. Ouvrez le composant logiciel enfichable Certificats (ordinateur local) et naviguez vers Personnel, puis vers Certificats. Remarque : la liste peut être dépourvue de certificats. Si c'est le cas, aucun certificat n'est installé. 5. Cliquez avec le bouton droit sur Certificats (ou sur Personnel si cette option n'existe pas.) 6. Choisissez Toutes les tâches, puis cliquez sur Importer. 7. Après le démarrage de l'assistant, cliquez sur Suivant. Naviguez vers le fichier PFX que vous avez créé et qui contient votre certificat de serveur et votre clé privée. Cliquez sur Suivant. 8. Entrez le mot de passe que vous avez attribué au fichier PFX lorsque vous l'avez créé. Vérifiez que l'option Marquer la clé comme exportable est sélectionnée, si vous voulez pouvoir réexporter la clé privée à partir de cet ordinateur. Comme mesure de sécurité supplémentaire, vous pouvez vouloir laisser cette option désactivée pour vous assurer que personne ne puisse faire de sauvegarde de votre clé privée. 9. Cliquez sur Suivant, puis choisissez le magasin de certificats dans lequel vous voulez enregistrer le certificat. Vous devez sélectionner Personnel car il s'agit d'un certificat de serveur Web. Si vous avez inclus les certificats dans la hiérarchie de certification, il seront également ajoutés à ce magasin. 10. Cliquez sur Suivant. Vous devez voir un résumé des écrans montrant ce que l'assistant va faire. Si ces informations sont correctes, cliquez sur Terminer. 11. Vous devez maintenant voir le certificat du serveur de votre serveur Web dans la liste des certificats personnels. Il sera désigné par le nom commun du serveur (trouvé dans la section Subject du certificat). 18 Août 2004 Document GIP "CPS" Page Page 18 / /
3.2 Configuration de IIS 5 pour Windows 2000/XP 1. Ouvrez le Gestionnaire des services Internet (sous Outils administratifs) et naviguez vers le site Web pour lequel vous voulez activer des communications sécurisées (SSL/TLS). 2. Cliquez avec le bouton droit sur le site, puis cliquez sur Propriétés. 3. Vous devez maintenant voir l'écran des propriétés associé au site Web. Cliquez sur l'onglet Sécurité de répertoire. 4. Sous la section Communications sécurisées, cliquez sur Certificat de serveur. 5. Ceci va démarrer l'assistant Certificat de site Web. Cliquez sur Suivant. 6. Choisissez l'option Attribuer un certificat existant, puis cliquez sur Suivant. 7. Vous devez maintenant voir un écran qui affiche le contenu du magasin de certificats personnel de votre ordinateur. Mettez en surbrillance votre certificat de serveur Web (désigné par le nom commun), puis cliquez sur Suivant. 8. Vous devez maintenant voir un écran résumé qui affiche tous les détails des certificats que vous installez. 9. Cliquez sur Suivant, puis sur OK pour quitter l'assistant. 18 Août 2004 Document GIP "CPS" Page Page / /