28 f�vrier 2003
Historique des versions | ||
---|---|---|
Version v0.5.fr.1.0 | 2003-02-28 | Revu par�: FR |
Traduction fran�aise de Fran�ois Romieu. Relecture de Pierre Machard. Traduction de la licence et quelques retouches de Jean-Philippe Gu�rard <jean-philippe.guerard@laposte.net>. | ||
Version v0.5 | 2002-10-20 | Revu par�: FM |
Ajout des information de Nate Carlson <natecars@natecarlson.com> sur IPsec — Ajout des informations de Bill Shirley <webnut@telocity.com> sur IMAPS et POPS — Ajout des informations de Colin McKinnon <colin@wew.co.uk> sur WinCrypt. | ||
Version v0.4 | 2002-06-22 | Revu par�: FM |
Corrections diverses�— ajout d'illustrations en ASCII | ||
Version v0.3 | 2002-05-09 | Revu par�: FM |
Ajout d'informations sur les extensions x509v3�— Corrections de fautes | ||
Version v0.2 | 2001-12-06 | Revu par�: FM |
Ajout du fichier openssl.cnf — Ajout d'information sur CRL de la part d'Averroes <a.averroes@libertysurf.fr> — Corrections de fautes | ||
Version v0.1 | 2001-11-18 | Revu par�: FM |
Cr�ation du guide pratique |
Comme moi, vous avez s�rement lu avec attention les pages de manuel des applications fournies par le projet OpenSSL et, comme moi autrefois, vous ne voyez pas trop par o� commencer ni comment travailler de fa�on s�curis�e avec des certificats. Ce document r�pond � l'essentiel de vos questions.
Ce guide pratique traite aussi d'applications hors du monde Linux.
Il ne sert � rien d'�mettre des certificats qu'on ne peut pas
utiliser�… Toutes les applications ne figurent pas
ici. Envoyez moi donc s'il vous pla�t vos ajouts et corrections.
On peut me contacter en anglais � l'adresse suivante�:
<franck@sopac.org>
.
La version originale de ce guide pratique est publi� via le Projet de documentation Linux. Vous y trouverez la derni�re version originale de ce document.
La version fran�aise de ce document est publi�e par le projet de traduction traduc.org. Vous y trouverez notamment la derni�re version fran�aise de ce document.
Ce document est distribu� dans l'espoir qu'il se r�v�lera utile, mais SANS AUCUNE GARANTIE� sans m�me la garantie implicite qu'il soit PROPRE � LA VENTE ou ADAPT� � UN BESOIN PARTICULIER.
En r�sum�, si les conseils qui vous sont prodigu�s ici annihilent la s�curit� de votre application de commerce �lectronique, eh bien, tant pis pour vous�— ce n'est jamais de notre faute. D�sol�.
Copyright � 2001 Franck Martin et divers membres de la liste de diffusion openssl-users. Ce document est diffus� selon les termes de la licence de documentation libre GNU (GFDL). Une version fran�aise officieuse de la version 1.1 de cette licence est disponible sur http://www.linux-france.org/prj/jargonf/general/gfdl.html.
Vous pouvez librement copier et distribuer (commercialement ou gratuitement) ce document dans n'importe quel format. Il vous est demand� de faire parvenir vos corrections et commentaires au responsable actuel de ce document. Vous pouvez cr�er des travaux d�riv�s de celui-ci et les distribuer si vous respectez les conditions suivantes�:
Faire parvenir vos travaux d�riv�s (dans le format le plus appropri� tel que SGML) au Projet de documentation Linux (LDP), ou � un projet du m�me type pour qu'il soit diffus� sur internet. Si vous n'envoyez pas votre document au LDP, informez le LDP de l'endroit o� votre document est disponible.
Diffuser vos travaux d�riv�s sous la m�me licence, ou sous la licence publique GNU (GPL). Inclure la notice pr�cisant les droits d'utilisation, et au moins un pointeur sur la licence utilis�e.
Reconna�tre la contribution des pr�c�dents auteurs et contributeurs principaux. Si vous envisagez de r�aliser un travail d�riv� autre qu'une traduction, il vous est demand� d'en discuter au pr�alable avec le responsable actuel de ce document.
Il vous est �galement demand� que si vous publiez ce guide pratique dans un format papier, vous envoyiez � ses auteurs quelques exemplaires � des fins d'�valuation�:-). Vous voudrez peut-�tre �galement m'envoyer quelque chose pour assaisonner mes �pinards�;-)
![]() | La licence de ce document nous oblige � inclure une copie en anglais de ce texte. La version fran�aise de ce texte se trouve � la section pr�c�dente. |
This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
In short, if the advises given here break the security of your e-commerce application, then tough luck- it's never our fault. Sorry.
Copyright � 2001 by Franck Martin and others from the openssl-users mailing list under GFDL (the GNU Free Documentation License).
Please freely copy and distribute (sell or give away) this document in any format. It's requested that corrections and/or comments be forwarded to the document maintainer. You may create a derivative work and distribute it provided that you:
Send your derivative work (in the most suitable format such as sgml) to the LDP (Linux Documentation Project) or the like for posting on the Internet. If not the LDP, then let the LDP know where it is available.
License the derivative work with this same license or use GPL. Include a copyright notice and at least a pointer to the license used.
Give due credit to previous authors and major contributors. If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer.
It is also requested that if you publish this HOWTO in hardcopy that you send the authors some samples for 'review purposes' :-). You may also want to send something to cook my noodles ;-)
Comme indiqu� dans l'introduction, ce document est un aide-m�moire et vous devez donc consulter les pages de manuel du paquet OpenSSL. La lecture de documents relatifs � la s�curit� est vivement conseill�e afin de comprendre comment votre s�curit� peut �tre compromise. Les certificats sont destin�s � am�liorer la s�curit� des transactions et il donc important que vous compreniez les implications de vos actes en terme de s�curit� ainsi que les limitations d'OpenSSL.
Le protocole SSL (Secure Socket Layer) a �t� cr�� par Netscape pour s�curiser les transactions entre les serveur web et les outils de navigation. Il a recours � un tiers, l'autorit� de certification (CA/Certificate Authority) qui identifie n'importe laquelle des extr�mit�s ou les deux. Il s'agit du fonctionnement en tr�s r�sum�.
Un navigateur demande une page web s�curis�e (en g�n�ral https://).
Le serveur web �met sa clef publique accompagn�e de son certificat.
Le navigateur v�rifie que le certificat a �t� �mis par un tiers fiable (en g�n�ral une autorit� de certification racine), qu'il est toujours valide et qu'il se rapporte bien au site en cours.
Le navigateur emploie la clef publique du serveur pour chiffrer une clef de chiffrement sym�trique al�atoire et l'envoie au serveur web avec l'URL demand�e et diverses donn�es HTTP chiffr�es.
Le serveur web d�chiffre la clef de chiffrement sym�trique gr�ce � sa sa clef priv�e et utilise la clef de chiffrement sym�trique pour r�cup�rer l'URL et les donn�es HTTP.
Le serveur renvoie le document html et les donn�es HTTP chiffr�es avec la clef sym�trique.
Le navigateur d�chiffre l'ensemble avec la clef sym�trique et affiche les informations.
Plusieurs concepts m�ritent d'�tre assimil�s.
Le chiffrement � base de clef publique garantit qu'une donn�e chiffr�e par une clef, publique ou priv�e, ne peut �tre d�chiffr�e que par la clef associ�e. Cela peut para�tre surprenant mais croyez moi, �a fonctionne. Les clefs sont de m�me nature et leurs r�les peuvent �tre invers�s�: ce que l'une chiffre est d�chiffrable par l'autre. La paire de clef repose sur des nombres premiers et leur longueur, exprim�e en digits binaires, traduit la difficult� qu'il y a � d�chiffrer un message sans connaissance � priori de la clef n�cessaire. L'astuce consiste � conserver une clef secr�te (la clef priv�e) et � distribuer l'autre clef (la clef publique) � tout le monde. N'importe qui peut vous envoyer un message chiffr� mais personne d'autre que vous ne peut le d�chiffrer tant que vous �tes le seul � conserver un des deux membres de la paire de clefs. On peut �galement prouver qu'un message provient de vous en le chiffrant avec votre clef priv�e�: seule la clef publique correspondante le d�chiffrera. Notez que le message n'est pas prot�g� parce que vous le signez. Tout le monde a acc�s � la clef de d�chiffrement, ne l'oubliez pas.
Le probl�me consiste � obtenir la clef publique du correspondant. En g�n�ral, vous lui demanderez de la transmettre via un message sign� qui la contiendra accompagn�e d'un certificat.
Message-->[Clef publique]-->Message chiffr�-->[Clef priv�e]-->Message |
Qu'est-ce qui vous garantit que vous dialoguez bien avec la bonne personne ou le bon site web�? En principe, quelqu'un aura fait l'effort (s'il est s�rieux) de v�rifier que les propri�taires du site sont bien ceux qu'ils affirment �tre. On fait naturellement confiance � ce quelqu'un�: son certificat, un certificat racine, est incorpor� � votre navigateur. Un certificat contient des informations relatives � son propri�taire comme une adresse �lectronique, un nom, l'usage pr�vu du certificat, une dur�e de validit�, un identifiant de localisation ou un nom qualifi� (DN/Distinguished Name) qui comprend le nom d'usage (CN/Common Name) et l'identifiant du signataire du certificat. Le certificat comprend �galement la clef publique et un hach� pour garantir l'int�grit� du message. Comme vous avez d�cid� de faire confiance au signataire du certificat, vous accordez du cr�dit � son contenu. On parle d'arbre de confiance de certification ou de chemin de certification. En g�n�ral, le navigateur et les applications incluent d'office le certificat racine d'autorit�s de certification bien connues. L'autorit� de certification tient � jour une liste des certificats sign�s ainsi qu'une liste des certificats r�voqu�s. Un certificat n'est pas fiable tant qu'il n'est pas sign� puisque seul un certificat sign� ne peut pas �tre modifi�. Un certificat peut se signer lui-m�me. On parle alors de certificat auto-sign�. Tous les certificats de CA racines sont ce type.
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root CA/Email=administrator@sopac.org Validity Not Before: Nov 20 05:47:44 2001 GMT Not After : Nov 20 05:47:44 2002 GMT Subject: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=www.sopac.org/Email=administrator@sopac.org Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:ba:54:2c:ab:88:74:aa:6b:35:a5:a9:c1:d0:5a: 9b:fb:6b:b5:71:bc:ef:d3:ab:15:cc:5b:75:73:36: b8:01:d1:59:3f:c1:88:c0:33:91:04:f1:bf:1a:b4: 7a:c8:39:c2:89:1f:87:0f:91:19:81:09:46:0c:86: 08:d8:75:c4:6f:5a:98:4a:f9:f8:f7:38:24:fc:bd: 94:24:37:ab:f1:1c:d8:91:ee:fb:1b:9f:88:ba:25: da:f6:21:7f:04:32:35:17:3d:36:1c:fb:b7:32:9e: 42:af:77:b6:25:1c:59:69:af:be:00:a1:f8:b0:1a: 6c:14:e2:ae:62:e7:6b:30:e9 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: FE:04:46:ED:A0:15:BE:C1:4B:59:03:F8:2D:0D:ED:2A:E0:ED:F9:2F X509v3 Authority Key Identifier: keyid:E6:12:7C:3D:A1:02:E5:BA:1F:DA:9E:37:BE:E3:45:3E:9B:AE:E5:A6 DirName:/C=FJ/ST=Fiji/L=Suva/O=SOPAC/OU=ICT/CN=SOPAC Root CA/Email=administrator@sopac.org serial:00 Signature Algorithm: md5WithRSAEncryption 34:8d:fb:65:0b:85:5b:e2:44:09:f0:55:31:3b:29:2b:f4:fd: aa:5f:db:b8:11:1a:c6:ab:33:67:59:c1:04:de:34:df:08:57: 2e:c6:60:dc:f7:d4:e2:f1:73:97:57:23:50:02:63:fc:78:96: 34:b3:ca:c4:1b:c5:4c:c8:16:69:bb:9c:4a:7e:00:19:48:62: e2:51:ab:3a:fa:fd:88:cd:e0:9d:ef:67:50:da:fe:4b:13:c5: 0c:8c:fc:ad:6e:b5:ee:40:e3:fd:34:10:9f:ad:34:bd:db:06: ed:09:3d:f2:a6:81:22:63:16:dc:ae:33:0c:70:fd:0a:6c:af: bc:5a -----BEGIN CERTIFICATE----- MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox DTALBgNVBAgTBEZpamkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQww CgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0B CQEWF2FkbWluaXN0cmF0b3JAc29wYWMub3JnMB4XDTAxMTEyMDA1NDc0NFoXDTAy MTEyMDA1NDc0NFowgYkxCzAJBgNVBAYTAkZKMQ0wCwYDVQQIEwRGaWppMQ0wCwYD VQQHEwRTdXZhMQ4wDAYDVQQKEwVTT1BBQzEMMAoGA1UECxMDSUNUMRYwFAYDVQQD Ew13d3cuc29wYWMub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbmlzdHJhdG9yQHNv cGFjLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAulQsq4h0qms1panB 0Fqb+2u1cbzv06sVzFt1cza4AdFZP8GIwDORBPG/GrR6yDnCiR+HD5EZgQlGDIYI 2HXEb1qYSvn49zgk/L2UJDer8RzYke77G5+IuiXa9iF/BDI1Fz02HPu3Mp5Cr3e2 JRxZaa++AKH4sBpsFOKuYudrMOkCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBT+BEbtoBW+wUtZA/gtDe0q4O35LzCBtgYDVR0jBIGuMIGrgBTmEnw9oQLl uh/anje+40U+m67lpqGBj6SBjDCBiTELMAkGA1UEBhMCRkoxDTALBgNVBAgTBEZp amkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQwwCgYDVQQLEwNJQ1Qx FjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0BCQEWF2FkbWluaXN0 cmF0b3JAc29wYWMub3JnggEAMA0GCSqGSIb3DQEBBAUAA4GBADSN+2ULhVviRAnw VTE7KSv0/apf27gRGsarM2dZwQTeNN8IVy7GYNz31OLxc5dXI1ACY/x4ljSzysQb xUzIFmm7nEp+ABlIYuJRqzr6/YjN4J3vZ1Da/ksTxQyM/K1ute5A4/00EJ+tNL3b Bu0JPfKmgSJjFtyuMwxw/Qpsr7xa -----END CERTIFICATE----- |
Comme vous avez pu le remarquer, le certificat mentionne son �metteur, contient la clef publique de son propri�taire, la p�riode de validit� du certificat et une signature pour v�rifier qu'il n'a pas �t� modifi�. Le certificat ne contient PAS la clef priv�e qui ne doit jamais �tre r�v�l�e. Ce certificat contient tous les �l�ments n�cessaires pour envoyer un message chiffr� � son propri�taire ou pour v�rifier un message dont la signature lui est attribu�e.
Les algorithmes de chiffrement � paire de clefs publique/priv�e sont int�ressants mais pas toujours pratiques. Ils sont asym�triques parce que des clefs diff�rentes sont requises au chiffrement et au d�chiffrement. La m�me clef ne peut remplir les deux r�les. Les algorithmes sym�triques actuels sont nettement plus rapides que les algorithmes asym�triques. Une clef sym�trique est toutefois potentiellement peu s�re. Il suffit qu'un individu nuisible se la procure et il n'y a plus d'information prot�g�e. La clef sym�trique doit donc �tre transmise au correspondant sans �tre intercept�e. Rien n'est s�r dans l'Internet. La solution consiste � envelopper la clef sym�trique dans un message chiffr� au moyen d'un algorithme asym�trique. Comme personne d'autre que vous ne conna�t la clef priv�e, le message chiffr� avec la clef priv�e est s�r (enfin, relativement, rien n'est garanti en ce bas monde sinon la mort et les imp�ts). La clef de chiffrement sym�trique est choisie al�atoirement de telle sorte qu'une compromission accidentelle n'ait pas d'impact sur les transactions futures.
Clef sym�trique-->[Clef publique]-->Clef de session chiffr�e-->[Clef priv�e]-->Clef sym�trique |
Diff�rents algorithmes existent, sym�triques ou non, avec diverses longueurs de clef. En principe les algorithmes ne peuvent pas �tre brevet�s. Si Henri Poincar� l'avait fait, il aurait pu poursuivre Albert Einstein�… Les algorithmes ne peuvent donc pas �tre brevet�s, � l'exception toutefois des �tats-Unis. OpenSSL est mis au point dans des pays o� les algorithmes ne sont pas brevet�s et o� l'usage de la cryptographie n'est pas r�serv� � des agences d'�tat pour des fins militaires ou d'espionnage. Lors de la n�gociation entre le navigateur et le serveur web, les applications fournissent l'une � l'autre une liste d'algorithmes qu'elles peuvent traiter, class�s par ordre de pr�f�rence. L'algorithme pr�f�r� en commun est choisi. OpenSSL peut �tre compil� sans inclure la gestion de certains algorithmes de fa�on � rester utilisable dans des pays o� l'usage de la cryptographie est r�glement�.
Un hachage s'obtient par application d'une fonction, dite � sens unique, � un message. La fonction pr�sente cette propri�t� qu'il n'est pas possible de former un message initial � partir du hach�. En outre, le hach� est compl�tement modifi� en cas de changement, m�me mineur, du message d'origine. Il est donc pratiquement impossible de modifier un message � hach� constant. Les fonctions de hachage s'emploient dans des m�canismes � base de mot de passe, des v�rifications d'int�grit� (MD5) et en g�n�ral pour v�rifier que des donn�es n'ont pas �t� alt�r�es. L'IETF (Internet Engineering Task Force) pr�f�re apparemment SHA1 � MD5 pour diverses raisons techniques (cf RFC2459 7.1.2 and 7.1.3).
La signature d'un message consiste � associer une identit� � son contenu. Le plus souvent il s'agit de prouver qui en est l'auteur mais ce n'est pas toujours le cas. Le message peut �tre textuel ou �tre le certificat de quelqu'un d'autre. Pour signer un message, son hach� est d'abord cr�� puis ce dernier est chiffr� avec la clef priv�e. Le r�sultat et votre certificat accompagnent ensuite le message d'origine. Le destinataire de l'ensemble recalcule le hach� et le compare au r�sultat du d�chiffrement de la signature avec votre clef publique suppos�e. Il v�rifie ensuite la validit� de votre certificat.
Ce type de signature permet de transmettre la clef publique et le certificat � chaque correspondant.
Il y a deux fa�ons de signer, soit en incluant le message � la signature, soit en chiffrant le message et sa signature. Cette derni�re forme n'est qu'un chiffrement tr�s pauvre car n'importe quelle application qui dispose de la clef publique peut l'inverser. La premi�re forme permet de passer un contenu textuel � l'utilisateur en toute circonstance tandis que la deuxi�me l'interdit d�s que le message a �t� alt�r�.
Le mot de passe correspond � un mot de passe originel Unix � ceci pr�s qu'il est normalement plus long que 8 caract�res et ne se limite pas forc�ment � un seul mot. De nos jours les syst�mes Unix utilisent des hach�s MD5 ou autres qui n'imposent plus de limitation de longueur de mot de passe.
L'infrastructure de clefs publiques (PKI/Public Key Infrastructure) d�signe le syst�me de gestion et la base de donn�es qui permettent de signer les certificats, de tenir � jour une liste de certificats r�voquer, de distribuer les clefs publiques, etc. Il est le plus souvent accessible via un site web ou un serveur LDAP. Certaines entit�s sont �galement charg�es de v�rifier que vous �tes bien qui vous pr�tendez �tre. On peut avoir recours � une PKI commerciale connue dont le certificat racine se trouve d�j� dans votre application. Un probl�me appara�t au niveau du courrier �lectronique pour lequel vous avez le choix entre l'emploi d'un certificat g�n�rique ou une facturation d'environ 100E par an pour chaque adresse �lectronique. De plus, il n'y a aucun moyen d'obtenir la clef publique de quelqu'un sans avoir re�u auparavant de ce correspondant son certificat (accompagn� de sa clef publique).
Bien que SSL ait �t� mis au point pour les services web, il peut s'appliquer au chiffrement de n'importe quel protocole. C'est le cas d'IMAPS, de POPS, de SMTPS�… Ces protocoles dupliquent sur un port alternatif leur service originel non-s�curis�. SSL peut �galement chiffrer n'importe quelle transaction sans qu'elle ait besoin d'�tre en ligne. S/MIME est construit de cette fa�on en ins�rant un message chiffr� dans un courrier �lectronique usuel. Le message est chiffr� avec la clef publique du destinataire. Si vous n'�tes pas en contact avec votre correspondant, vous devez conna�tre sa clef publique, soit que vous l'ayez r�cup�r�e depuis son site web, depuis un annuaire ou qu'il vous l'ait envoy�e au pr�alable par courrier �lectronique accompagn�e de son certificat (pour s'assurer qu'il s'agit bien de la personne souhait�e).
Dans l'autre sens, un navigateur peut transmettre son propre certificat au serveur web afin de se faire identifier.
De nos jours l'installation d'OpenSSL ne soul�ve gu�re de difficult�s. Les distributions incluent des gestionnaires de paquets. Reportez-vous � la documentation de votre distribution ou aux fichiers README et INSTALL qu'inclut l'archive tar d'OpenSSL. Ce guide pratique n'a pas pour objectif de traiter de l'installation mais de l'utilisation.
Je d�cris quelques options d'installation standard dont la connaissance est n�cessaire pour les exemples qui suivent. Votre installation peut diff�rer.
Les certificats OpenSSL sont stock�s dans /var/ssl. Toutes les commandes et r�pertoires de ce document partent de /var/ssl. Ce n'est pas indispensable mais les exemples en sont facilit�.
OpenSSL cherche par d�faut son fichier de configuration dans /usr/lib/ssl/openssl.cnf. Ajoutez donc syst�matiquement -config /etc/openssl.cnf aux commandes telles openssl ca et openssl req (par exemple). Je me sers de /etc/openssl.cnf pour maintenir l'ensemble des fichiers de configuration dans /etc.
Les utilitaires et diverses biblioth�ques se trouvent dans /usr/lib/ssl
V�rifiez que CA.pl se trouve dans un r�pertoire qui figure dans le chemin d'acc�s par d�faut aux programmes. Il peut se trouver dans le r�pertoire /usr/lib/ssl. CA.pl permet de masquer la complexit� des commandes openssl. Je l'utilise dans tous les exemples en indiquant entre crochets l'�quivalent openssl.
Modifiez CA.pl de fa�on � ce que les appels � openssl ca et openssl req incluent l'option -config /etc/openssl.cnf.
#$SSLEAY_CONFIG=$ENV{"SSLEAY_CONFIG"}; $SSLEAY_CONFIG="-config /etc/openssl.cnf"; #$CATOP="./demoCA"; $CATOP="/var/ssl"; |
/etc/openssl.cnf doit �tre configur� de fa�on � minimiser les donn�es � renseigner � chaque invocation des utilitaires.
#---Begin--- # # Fichier de configuration pour OpenSSL. # S'emploie surtout pour les demandes de certificats. # # NdT: autre chose que de l'ASCII dans les fichiers de # configuration me rend nerveux. Il y a donc un zest de triche # dans ce qui suit. Vous ne voudriez pas me rendre nerveux, non ? :o) # RANDFILE = $ENV::HOME/.rnd oid_file = $ENV::HOME/.oid oid_section = new_oids # Section des extension X.509v3 pour se servir du # fichier avec l'option -extfile de la commande # "openssl x509" # extensions = # (Variante: employer un fichier de configuration qui # n'a que des extensions X.509v3 dans sa section # principale [= default]) [ new_oids ] # On ajoute des OID pour les commandes 'ca' et 'req'. # Par exemple: # testoid1=1.2.3.4 # L'emploi de substitutions est possible: # testoid2=${testoid1}.5.6 #################################################################### [ ca ] default_ca = CA_default # Section de la CA standard #################################################################### [ CA_default ] dir = /var/ssl # Emplacement de base certs = $dir/certs # Emplacement de stockage des nouveaux certificats crl_dir = $dir/crl # Emplacement des nouvelles CRL database = $dir/index.txt # Fichier d'index new_certs_dir = $dir/newcerts # Emplacement des nouveaux certificats certificate = $dir/cacert.pem # Certificat de la CA serial = $dir/serial # Numero de serie en cours crl = $dir/crl.pem # CRL en cours private_key = $dir/private/cakey.pem # Clef privee RANDFILE = $dir/private/.rand # Fichier d'alea x509_extensions = usr_cert # Extensions pour les certificats # Extensions pour la CRL. Remarque: Netscape communicator n'aime pas les CRL de version 2, # on commente donc pour avoir une CRL version 1 # crl_extensions = crl_ext default_days = 365 # Duree de vie d'un certificat default_crl_days= 7 # Intervalle entre CRLs default_md = sha1 # Algorithme de hachage preserve = no # Conserve-t-on l'ordre du DN ? # Diverses facons de specifier l'allure des requetes # Pour une requete de type CA, les attributs doivent etre les memes # Les champs 'optional' et 'supplied' correspondent respectivement # a des champs optionnels et fournis :o) policy = policy_match # Typage CA [ policy_match ] countryName = match stateOrProvinceName = optional localityName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # Typage tout-venant # Tous les types d'objets acceptables doivent etre enumeres [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes default_md = sha1 x509_extensions = v3_ca # Extensions pour un certificat auto-signant # Mot de passe pour les clefs privees (l'application le demande s'il est vide). # input_password = secret # output_password = secret # Masque pour les types de chaines valides. Plusieurs choix sont possibles. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString. # utf8only: only UTF8Strings. # nombstr : PrintableString, T61String (pas de BMPStrings ni de UTF8Strings). # MASK:XXXX valeur litterale. # Attention: certaines versions de Netscape plantent sur les BMPStrings ou les UTF8Strings. # A utiliser avec prudence! string_mask = nombstr # req_extensions = v3_req # Extensions pour une demande de certificat [ req_distinguished_name ] countryName = Nom du pays (code sur 2 lettres) countryName_default = FJ countryName_min = 2 countryName_max = 2 stateOrProvinceName = Etat ou province (nom complet) stateOrProvinceName_default = Fiji localityName = Ville localityName_default = Suva 0.organizationName = Organisation (nom de l'entreprise par exemple) 0.organizationName_default = SOPAC # Possible mais pas normalement pas necessaire :-) #1.organizationName = Second nom de l'organization #1.organizationName_default = World Wide Web SARL organizationalUnitName = Nom du departement dans l'organisation organizationalUnitName_default = ITU commonName = Nom d'usage commonName_max = 64 emailAddress = Addresse e-mail emailAddress_max = 40 # SET-ex3 = SET extension number 3 [ req_attributes ] challengePassword = Un mot de passe de challenge challengePassword_min = 4 challengePassword_max = 20 unstructuredName = Nom optionnel [ usr_cert ] # Extensions ajoutees quand 'ca' signe une requete. # Contraire aux suggestions PKIX mais des CA le font et certains # logiciels le demandent pour ne pas confondre un certificat # utilisateur avec un certificat de CA basicConstraints=CA:FALSE # Examples d'utilisation de nsCertType. En cas d'omission, # le certificat peut servir a tout sauf a signer des objets # Serveur SSL # nsCertType = server # Certificat promis a signer des objets. # nsCertType = objsign # Client normal. # nsCertType = client, email # Tout. # nsCertType = client, email, objsign # Classique pour un certificat client. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # Pour la boiboite de commentaire de Netscape. nsComment = "Certificate issued by https://www.sopac.org/ssl/" # Recommandations PKIX sans effets secondaires facheux. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer:always # On importe l'adresse e-mail # pour les attributs subjectAltName et issuerAltname. # subjectAltName=email:copy # Informations relatives au sujet. # issuerAltName=issuer:copy # Adresse de base des autres URL si on n'en donne pas # au cas par cas. nsBaseUrl = https://www.sopac.org/ssl/ # Adresse de la CRL du moment. nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl # Adresse pour revoquer un certificat. nsRevocationUrl = https://www.sopac.org/ssl/revocation.html? # Adresse pour renouveller un certificat. nsRenewalUrl = https://www.sopac.org/ssl/renewal.html? # Adresse des pratiques de la CA. nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html. # Adresse du certificat du signataire. issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt. # Adresse de la CRL du moment. crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl [ v3_ca ] # Extensions d'une CA standard # Recommandation PKIX subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always # Recommandation PKIX que certains bugware n'aiment pas # basicConstraints = critical,CA:true # On utilise donc plutot ceci basicConstraints = CA:true # Emploi de la clef: typique d'un certificat de CA. # On le laisse inactif pour prevenir l'emploi d'un # certificat auto-signant de test. # keyUsage = cRLSign, keyCertSign # En fonction des besoins. # nsCertType = sslCA, emailCA # On inclut l'adresse e-mail dans le nom alternatif du sujet (recommendation PKIX) # subjectAltName=email:copy # On copie les informations du signataire # issuerAltName=issuer:copy # Encodage DER en base 16 d'une extension: licence de pilotage requise! # 1.2.3.5=RAW:02:03 # On peut surcharger une extension standard: # basicConstraints= critical, RAW:30:03:01:01:FF # Message pour la boite d'affichage de Netscape. nsComment = "Certificat en provenance de https://www.sopac.org/ssl/" # Adresse de base des autres URL si on n'en donne pas # au cas par cas. nsBaseUrl = https://www.sopac.org/ssl/ # Adresse de la CRL du moment. nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl # Adresse pour revoquer un certificat. nsRevocationUrl = https://www.sopac.org/ssl/revocation.html? # Adresse pour renouveller un certificat. nsRenewalUrl = https://www.sopac.org/ssl/renewal.html? # Adresse des pratiques de la CA. nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html # Adresse du certificat du signataire. issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt # Adresse de la CRL du moment. crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl [ crl_ext ] # Extensions de CRL # Seuls issuerAltName et authorityKeyIdentifier se justifient dans une CRL. # issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always,issuer:always #----End---- |
Quelques remarques au sujet du fichier openssl.cnf
Plusieurs variables se pr�sentent avec les suffixes _default, _min et _max pour leurs valeurs minimales ou leurs nombres minimaux et maximaux de caract�res respectivement.
Le fichier est bas� sur des [Sections] de variables.
r�pertoire de base.
d�signe la section des variables pour un certificat dont le type n'est pas sp�cifi�.
d�finit l'usage du certificat. CA:TRUE d�signe un certificat de CA racine par exemple.
Utilisez la commande suivante apr�s avoir modifi� de fa�on ad�quate le fichier openssl.cnf�:
CA.pl -newca |
L'utilitaire demande de choisir un fichier contenant le certificat de l'AC ou bien il propose d'en cr�er un. A titre d'exercice, laissez vous guider dans la cr�ation d'une AC. La partie suivante remplace cette AC par une AC de dur�e de vie plus importante. CA.pl ne g�n�re que des certificats valables 365 jours.
La commande suivante cr�e un certificat auto-sign� (pour une autorit� de certification donc).
CA.pl -newcert openssl req -config /etc/openssl.cnf -new -x509 -keyout newreq.pem \ -out newreq.pem -days 365 |
Le nouveau certificat se trouve dans le fichier newreq.pem. Utilisez un CN du type ��ACME root Certificate��. Le fichier est � diviser en deux parties, cacert.pem et private/cakey.pem. La partie d�limit�e par -RSA PRIVATE KEY- va dans le fichier private/cakey.pem tandis que la partie -CERTIFICATE- est destin�e au fichier cacert.pem. Supprimez newreq.pem une fois l'op�ration effectu�e.
V�rifiez � pr�sent que le fichier index.txt est vide et que le fichier serial contient la valeur 01.
Afin de ne pas avoir � renouveler tous les certificats �mis par une AC lorsque son certificat racine expire, il est souhaitable d'augmenter la dur�e de vie de ce dernier. Les autorit�s de certification commerciales emploient des dur�es de 5 � 10 ans.
openssl req -config /etc/openssl.cnf -new -x509 -keyout private/cakey.pem \ -out cacert.pem -days 3650 |
La commande pr�c�dente est plus efficace que ��CA.pl�-newcert�� car elle place les fichiers cr��s � l'emplacement souhait� et g�n�re une AC racine valable 10 ans.
Il reste � s'assurer que le certificat auto-sign� racine n'est employ� que pour signer des certificats. La confidentialit� de la clef priv�e est tr�s importante. Ne la compromettez jamais en �tant le mot de passe. On peut envisager de la ranger sur un support amovible et de n'y acc�der qu'en cas de besoin. Si la machine est compromise, la clef priv�e est ailleurs.
On dispose maintenant d'une autorit� de certification racine. Les utilisateurs doivent faire confiance � votre certificat de CA et donc le r�cup�rer et le charger dans leurs navigateurs.
Il faudra renseigner le mot de passe lors de la signature de chaque certificat.
CORRIGEZ-MOI parce que je ne suis pas tout � fait s�r de la proc�dure.
Un certificat peut �tre employ� pour en signer un autre pourvu qu'il soit valide et ait �t� autoris� � le faire lors de sa cr�ation. On peut donc cr�er une demande de certificat et une clef priv�e, faire signer le certificat par un tiers et installer le certificat sign� et la clef priv�e. La partie -PRIVATE KEY- va dans le fichier private/cakey.pem tandis que la partie -CERTIFICATE- va dans cacert.pem.
On commence par �ter du certificat tout ce qui n'appartient pas � la section -CERTIFICATE-.
openssl x509 -in cacert.pem -out cacert.crt |
On place ensuite le fichier obtenu sur son site web, par exemple http://mysite.com/ssl/cacert.crt. Le serveur web doit int�grer une description MIME pour les fichiers .crt. Le certificat est pr�t � �tre t�l�charg� et utilis� par n'importe quel navigateur.
Il est important de publier son certificat racine de CA sur un site web car il est peu probable que les utilisateurs l'aient d�j� d'inclus dans leur navigateur. Notez que n'importe qui peut imiter votre site web et votre certificat de CA racine. Dans la mesure o� on dispose de plusieurs chemins pour transmettre l'information, il devient fortement improbable qu'un attaquant arrive � tout contr�ler.
Microsoft propose un service de mise � jour de Windows qui propagera votre certificat racine aux programmes Internet Explorer en circulation. Contactez Microsoft pour que votre certificat soit ajout� � leur base de donn�es et int�gr� � leurs futurs paquets.
On r�cup�re le certificat depuis le web ou le syst�me de fichiers avec Netscape. Ce dernier identifie automatiquement le fichier comme un certificat racine et propose de l'int�grer. Un assistant guide dans l'installation. A la fin du processus, on pr�cise le domaine d'application du certificat�: s�curisation web, signature de courrier �lectronique ou signature de code.
Galeon fonctionne comme Mozilla en ce qu'il repose sur le m�me moteur de rendu HTML. Il n'inclut toutefois pas d'outil de gestion des certificats.
On commence par aller � l'adresse de t�l�chargement du certificat avant de le sauvegarder en local. L'assistant d'installation de certificat est invoqu� par double-clic sur le fichier de certificat. Internet Explorer installe spontan�ment les certificats auto-sign�s dans la liste des autorit�s de certification. A partir de ce point, Internet Explorer cesse d'�mettre des avertissements et consid�re comme fiables les certificats sign�s avec ce certificat de CA racine.
Il est �galement possible d'ouvrir le certificat depuis Internet Explorer qui en affiche alors le contenu. L'assistant d�marre ensuite en appuyant sur le bouton d'installation du certificat.
CA.pl -newreq (openssl req -config /etc/openssl.cnf -new -keyout newreq.pem \ -out newreq.pem -days 365) |
La commande pr�c�dente cr�e une nouvelle clef priv�e et une demande de certificat qu'elle place dans newreq.pem. Pour s�curiser un site web, par exemple www.sopac.org, on utilise le nom d'usage (CN) www.sopac.org. Pour le courrier �lectronique de franck@sopac.org, on utiliserait franck@sopac.org.
CA.pl -sign (openssl ca -config /etc/openssl.cnf -policy policy_anything \ -out newcert.pem -infiles newreq.pem) |
Cette commande signe la demande avec cacert.pem et sauve le certificat dans newcert.pem. Le mot de passe de cacert.pem (le certificat de CA) est n�cessaire. Un fichier newcerts/xx.pem est cr�� et les fichiers index.txt, serial sont mis � jour.
La clef priv�e se trouve donc dans la section -PRIVATE KEY- de newreq.pem et le certificat dans la section -CERTIFICATE- de newcert.pem.
Une copie de newcert.pem est �mise dans le r�pertoire newcerts/ et l'enregistrement correspondant ajout� � index.txt de telle sorte qu'un client puisse acc�der � l'information via un serveur web et v�rifier l'authenticit� du certificat.
On note que le fichier newreq.pem contient aussi bien la demande de certificat que la clef priv�e. La section -PRIVATE KEY- n'est pas n�cessaire � la signature et il faut absolument la retirer avant de transmettre la demande � quelqu'un d'autre pour qu'il la signe. De m�me, pour signer une demande de certificat, il suffit d'obtenir la section -CERTIFICATE REQUEST-. Il n'y a aucune raison de demander la clef priv�e.
La commande suivante r�voque un certificat�:
openssl -revoke newcert.pem |
La base de donn�es index.txt est modifi�e en cons�quence et le certificat est annot� comme r�voqu�. Il reste � r�g�n�rer la liste de r�vocation des certificats�:
openssl ca -gencrl -config /etc/openssl.cnf -out crl/sopac-ca.crl |
La liste de r�vocation (CRL/Certificate Revokation List) doit �tre rendue publique, par exemple sur un site web.
Les param�tres crldays, crlhours permettent de pr�ciser la prochaine date de mise � jour de la CRL. crlexts sp�cifie la section du fichier openssl.cnf � employer pour cr�er une CRL de version 2 en place d'une CRL de version 1.
openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 \ -crlexts crl_ext -out crl/sopac-ca.crl |
L'utilisateur transmet son ancienne demande de certificat ou en r�g�n�re une nouvelle bas�e sur sa clef priv�e.
Il faut alors r�voquer l'ancien certificat et signer la nouvelle demande de certificat.
L'ancien certificat se retrouve en cherchant dans le fichier index.txt le nom qualifi� (DN) qui correspond � la requ�te. La proc�dure de r�vocation s'effectue ensuite avec le num�ro de s�rie <xx> et le fichier de certificat cert/<xx>.pem.
La signature de la nouvelle requ�te peut �tre manuelle pour s'assurer que les dates de validit� du certificat seront correctes.
openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem \ -infiles newreq.pem -startdate [now] -enddate [previous enddate+365days] |
[now] et [previous enddate+365days] sont � remplacer par des valeurs ad�quates.
L'affichage sous forme textuelle du contenu d'un certificat sous forme cod�e s'effectue avec la commande suivante�:
openssl x509 -in newcert.pem -noout -text |
Le fichier index.txt contient les r�f�rences des certificats cr��s par OpenSSL. Les enregistrements sont annot�s avec un R pour indiquer que le certificat est r�voqu�, V qu'il est valide et E qu'il a expir�.
�tre une autorit� de certification implique certaines t�ches�:
publier le certificat de CA racine pour qu'il puisse �tre d�ploy� dans les applications�;
publier la liste de r�vocation�;
afficher le contenu d�taill� des certificats, notamment leur num�ro de s�rie�;
fournir un formulaire de demande de certificats.
Un serveur web et quelques scripts permettent de r�aliser toutes ces fonctions.
COMPL�TEZ-MOI�: code de l'interface web.
Il ne faut jamais se servir du certificat auto-sign� de la CA racine avec quelque application que ce soit, notamment avec Apache qui oblige � supprimer le mot de passe de protection de la clef priv�e.
On commence par cr�er et signer une demande de certificat dont le nom d'usage (CN) est du type www.mysite.com. On ne conserve que la section ---CERTIFICATE --- du certificat.
La clef doit �tre d�verrouill�e en en autorisant l'usage sans devoir rentrer le mot de passe. On supprime donc le mot de passe du fichier newreq.pem�:
openssl rsa -in newreq.pem -out wwwkeyunsecure.pem |
Comme la clef priv�e n'est plus prot�g�e, on a int�r�t � savoir ce qu'on fait et notamment � v�rifier les droits d'acc�s aux fichiers. Si quelqu'un arrive � s'en emparer, le site est compromis. On peut � pr�sent utiliser newcert et wwwkeyunsecure.pem avec Apache.
On copie wwwkeyunsecure.pem et newcert.pem dans le r�pertoire /etc/httpd/conf/ssl/ dans les fichiers wwwkeyunsecure.pem et wwwcert.crt respectivement.
On �dite ensuite /etc/httpd/conf/ssl/ssl.default-vhost.conf�:
---- # Server Certificate: # SSLCertificateFile doit pointer vers un certificat en PEM. # Si on verrouille le certificat, un mot de passe est requis. # kill -HUP demande de nouveau le certificat. On cree un # certificat de test via `make certificate' lors de la # compilation. #SSLCertificateFile conf/ssl/ca.crt SSLCertificateFile wwwcert.crt # Clef secrete du serveur: # A employer lorsque la clef est separee du certificat. #SSLCertificateKeyFile conf/ssl/ca.key.unsecure SSLCertificateKeyFile wwwkeyunsecure.pem ---- |
On arr�te httpd (/etc/rc.d/init.d/httpd stop) puis on v�rifie que tous les processus ont disparu (killall httpd) avant de relancer le d�mon (/etc/rc.d/init.d/httpd start).
Se reporter au paragraphe ��POPS et les certificats�� pour davantage de d�tails.
Un fichier pem pour ipop3sd se cr�e en g�n�rant un certificat, en d�verrouillant la clef priv�e et et combinant les deux dans le fichier /etc/ssl/imap/ipop3sd.pem. Ce dernier fichier correspond � l'emplacement attendu par le rpm de la Mandrake�9.0. La m�me proc�dure s'applique � imap avec le fichier /etc/ssl/imap/imapsd.pem.
Le CN doit correspondre au nom auquel le client de messagerie se connecte (par exemple mail.xyz.org). Avec MS-Outlook, le nom du serveur pop se rentre dans l'onglet � cet effet et on active l'option ��This server requires a secure connection (SSL)�� dans les propri�t�s avanc�es. Les connexions s'effectuent alors sur le port 995 (imaps). Le certificat de la CA doit �tre install� dans MS Internet Explorer pour que le certificat de mail.xyz.org soit valid�.
Dans Microsoft Key Manager, on choisit le service pour lequel on souhaite cr�er un certificat, par exemple IMAP (ou WWW). L'assistant permet de g�n�rer une nouvelle clef. Il faut s'assurer de ce que le nom qualifi� n'est pas identique � celui d'une clef existante. Un nom d'usage (CN) tel imap.mycompany.com fait l'affaire. L'assistant sauve la demande dans le fichier C:\NewKeyRq.txt. Key Manager indique la clef avec un signe qui signale qu'elle n'est pas sign�e.
On copie ce fichier dans le r�pertoire /var/ssl d'OpenSSL sous le nom newreq.pem et on signe la requ�te comme � l'accoutum�.
CA.pl -sign |
newcert.pem n'est pas intelligible par Key Manager car il contient du texte et une section -CERTIFICATE-. Il faut supprimer le texte�:
openssl x509 -in newcert.pem -out newcertx509.pem |
Un �diteur remplit �galement cette t�che.
newcertx509.pem ne contient plus qu'une section -CERTIFICATE-.
On recopie newcertx509.pem sur la machine o� s'ex�cute Key Manager. Il suffit alors de cliquer du bouton droit dessus dans l'application Key Manager et de renseigner le mot de passe. La clef est alors fonctionnelle.
Il faut simplement g�n�rer et signer une demande de certificat avec l'adresse �lectronique en guise de nom d'usage (CN).
On peut alors signer un message de test test.txt avec le nouveau certificat newcert.pem et la clef newreq.pem�:
openssl smime -sign -in test.txt -text -out test.msg -signer newcert.pem -inkey newreq.pem |
test.msg peut �tre transmis � n'importe qui et cette proc�dure s'applique pour �mettre des notes sign�es ou tout autre document sign� destin� � �tre publi� �lectroniquement.
Il faut l'importer dans Outlook sous forme de fichier pkcs12. La cr�ation du fichier pkcs12 s'effectue comme suit�:
CA.pl -pkcs12 "Franck Martin" (openssl pkcs12 -export -in newcert.pem -inkey newreq.pem \ -out newcert.p12 -name "Franck Martin") |
Il est possible de lier le certificat de signature au fichier pkcs12�:
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem \ -certfile cacert.pem -out newcert.p12 -name "Franck Martin" |
Ce certificat contient les clefs priv�es et publique. Seul le mot de passe prot�ge cette derni�re. Le fichier ne doit donc pas tra�ner n'importe o�.
On suit les menus Tools, Options et Security de MS Outlook. Un clic sur le bouton import/export active l'import du fichier pkcs12. Il n'y a plus qu'� renseigner le mot de passe d'export et l'identit� de l'utilisateur, "Franck Martin" dans mon cas (� adapter).
On clique ensuite sur le bouton Settings puis, MS Outlook ayant normalement s�lectionn� les choix par d�faut, sur New. Il est alors possible d'envoyer des courriers �lectroniques sign�s. La clef publique est transmise en m�me temps que les messages sign�s et le destinataire est donc en mesure de renvoyer des donn�es chiffr�es.
Comme le certificat a �t� g�n�r� � partir d'un certificat auto-sign�, le chemin de validation ne sera pas valide tant que l'application ne conna�t pas le certificat de l'AC racine. On se reportera � la section d'installation du certificat de l'AC racine dans Internet Explorer pour la d�tail de la marche � suivre.
Le message est envoy� sign�/chiffr� ou simplement sign� en clair. Le chiffrement n'en est pas vraiment un dans la mesure o� le message contient tout le n�cessaire pour effectuer le d�chiffrement.
Certaines anciennes versions de MS Outlook pour XP parcourent Internet pour v�rifier la validit� du certificat. Plusieurs secondes peuvent alors s'�couler avant que le courrier ne soit affich�, voire plusieurs minutes pour que le hors-temps de MS Outlook ne se d�clenche si on n'est pas connect� en permanence. Ce processus bloque toute la machine jusqu'� ce que MS Outlook l'ait achev� d'une fa�on ou d'une autre.
Evolution 1.0 ne g�re pas S/MIME mais seulement PGP. La prise en charge S/MIME est pr�vue pour une version ult�rieure (d'apr�s la base de donn�es de suivi des bogues d'Evolution). Evolution remarque quand m�me parfois que le document est sign� en clair et l'affiche correctement bien qu'il ne puisse en v�rifier la validit�. Des versions ant�rieures d'Evolution n'assimilaient pas un des trois types MIME de signature que MS Outlook emploie h�las assez souvent.
WinCrypt s'appuie sur l'API de chiffrage de Microsoft pour chiffrer et signer les fichiers. Il cr�e en outre de fa�on optionnelle une archive zip avant la signature. Il dispose d'un frontal pour g�rer la liste des certificats, les parcourir, en installer, en supprimer et choisir celui � employer avec WinCrypt.
La proc�dure de cr�ation d'un certificat est identique � celle de Microsoft Outlook. La m�me liste de certificats est utilis�e par les deux applications.
Un fichier filename.sgn sign� avec WinCrypt se v�rifie avec la commande�:
openssl smime -verify -inform der -in filename.sgn -CAfile cacert.crt |
La commande suivante permet de signer un fichier avec OpenSSL de fa�on compatible�:
openssl smime -sign -outform der -nodetach -out filename.sgn \ -signer certificate.pem -in filename.txt |
Pour visualiser l'organisation d'un fichier sign�:
openssl asn1parse -inform der -in filename.sgn |
Il est possible de signer ses programmes et ses applets pour prouver qu'on en est l'auteur. Il est important pour les clients de savoir que personne n'a modifi� le code en y ins�rant un virus ou un cheval de Troie. L'�tape de signature n�cessite le SDK Microsoft Authenticode. Ce dernier est disponible dans la section MSDN du site web de Microsoft.
On g�n�re un certificat comme � l'accoutum� mais avec un nom d'usage de la forme ��ACME Software Cert��. Le certificat doit ensuite �tre sign� par l'autorit� de certification et converti au format pkcs12.
CA.pl -newreq CA.pl -sign CA.pl -pkcs12 "ACME Software Cert" |
On obtient un fichier newcert.p12 qu'on importe dans la liste des certificats en cliquant dessus une fois sous MS Windows.
Le certificat peut alors servir � signer du code�:
signcode -cn "ACME Software cert" -tr 5 -tw 2 -n "My Application" \ -i http://www.acme.com/myapp/ \ -t http://timestamp.verisign.com/scripts/timstamp.dll myapp.exe |
A l'installation et � l'ex�cution de l'application, une boite de dialogue appara�t sous le nom ��My Application�� avec le lien point� par l'argument -i.
IPSec est un nouveau protocole bas� sur IP qui autorise les liens chiffr�s � la demande entre deux machines. La mise en œuvre d'IPSec est obligatoire dans le cadre d'IPv6 et peut �tre incorpor�e dans IPv4. Qu'IPSec soit obligatoire pour IPv6 ne signifie pas pour autant qu'il est syst�matiquement d�ploy� par les administrateurs r�seau. IPSec n'est pas facile � mettre en œuvre � cause des m�canismes de d�ploiement automatiques des clefs. Le DNS peut aider mais cette m�thode n'est pas encore courante. En outre, les autorit�s de certification ne proposent pas d'outils pour un d�ploiement � grande �chelle en entreprise.
FreeS/WAN est une souche IPSec renomm�e pour GNU/Linux. La version actuelle (1.9.7) doit �tre patch�e pour g�rer les certificats X.509v3. Une telle version modifi�e est disponible sur ce site. Certaines distributions l'incluent en standard, il est donc conseill� de commencer par v�rifier si c'est le cas pour celle qu'on utilise. Cette version pr�sente l'int�r�t de permettre l'usage d'OpenSSL pour la cr�ation des certificats de FreeS/WAN et des enregistrements CERT du DNS. En outre, l'interaction avec la souche IPSec de Microsoft est r�alisable. On se reportera � la page de Nate's pour davantage d'informations.
On cr�e un certificat dont le CN correspond au nom de domaine compl�tement qualifi� de la passerelle IPSec, par exemple host.example.com. Ne pas oublier de signer le certificat. On dispose des deux fichiers newcert.pem et newreq.pem. Le fichier newreq.pem doit �tre �dit� pour ne plus contenir que la clef priv�e�: on supprime tout ce qui n'est pas compris entre les balises --BEGIN RSA PRIVATE KEY-- et --END RSA PRIVATE KEY--. Il faut ensuite copier ces fichiers sur la passerelle en faisant attention � ce que le transfert soit s�curis�. Les fichiers de configuration de FreeS/WAN se trouvent dans le r�pertoire /etc/freeswan pour ma distribution. � ajuster suivant les cas.
mv newreq.pem /etc/freeswan/ipsec.d/private/host.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/host.example.com.pem |
On copie le certificat racine dans le r�pertoire de configuration de FreeS/WAN. Il ne faut copier que le certificat, pas la clef.
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
On g�n�re une liste de r�vocation ou on copie l'existante � l'emplacement ad�quat�:
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
Toujours sur la passerelle, on inclut dans le fichier ipsec.secrets la ligne ci-dessous�:
: RSA host.example.com.key "password" |
Le mot de passe est celui qui a servi � cr�er la paire de clef. On configure le fichier ipsec.conf comme suit�:
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=1 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net leftsubnet=<sous_reseau>/<masque_de_sous_reseau> also=roadwarrior conn roadwarrior right=%any left%defaultroute leftcert=host.example.com.pem auto=add pfs=yes |
Comme on peut le voir, deux liens sont �tablis, l'un avec la passerelle, l'autre avec le r�seau situ� derri�re la passerelle. Ceci s'av�re tr�s pratique si un pare-feu ou un traducteur d'adresses est actif sur la passerelle. La configuration autorise tout propri�taire d'un certificat valide � se connecter � la passerelle.
La proc�dure est semblable. Il faut cr�er un certificat dont le CN correspond au nom de domaine compl�tement qualifi� de l'h�te, par exemple clienthost.example.com. Le certificat doit �tre sign� par la m�me autorit� de certification que la passerelle. Le lien est alors autoris�.
Comme pour la passerelle, on copie de fa�on s�curis�e les fichiers suivants dans les r�pertoires de configuration�:
mv newreq.pem /etc/freeswan/ipsec.d/private/clienthost.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/clienthost.example.com.pem |
On copie le certificat racine dans le r�pertoire de configuration de FreeS/WAN. Il ne faut copier que le certificat, pas la clef.
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
On g�n�re une liste de r�vocation ou on copie l'existante � l'emplacement ad�quat�:
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
Enfin, on copie le certificat (mais pas la clef priv�e) de la passerelle�:
mv host.example.com.pem /etc/fresswan/ipsec.d/host.example.com.pem |
Le fichier ipsec.secrets est �dit� de la m�me fa�on pour charger la clef priv�e�:
: RSA clienthost.example.com.key "password" |
On �dite le fichier ipsec.conf pour activer la connexion�:
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=0 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net left=(ip of host) leftsubnet=(gateway_host_subnet)/(gateway_host_netmask) also=roadwarrior conn roadwarrior left=(ip of host) leftcert=host.example.com.pem right=%defaultroute rightcert=clienthost.example.com.pem auto=add pfs=yes |
On met ensuite le VPN en action�:
ipsec auto --up roadwarrior ipsec auto --up roadwarrior-net |
Afin que le lien s'�tablisse automatiquement, on remplace dans le fichier de configuration la directive ��auto=add�� par ��auto=start��.
La proc�dure est identique � celle du client FreeS/WAN. On cr�e un certificat, par exemple pour winhost.example.com, qui doit � pr�sent �tre converti au format pkcs12. On se reportera � la section ��MS Outlook et les certificats�� pour le d�tail de la marche � suivre. On s'assure de ce que le fichier .p12 est attach� au certificat de l'autorit� de certification racine.
On note le r�sultat de la commande�:
openssl x509 -in cacert.pem -noout -subject |
Ce fichier doit �tre copi� de fa�on s�curis�e sur la machine MS Windows.
On installe � pr�sent l'utilitaire ipsec.exe de Marcus Muller, par exemple dans le r�pertoire c:\ipsec.
On ouvre la console de gestion Microsoft (Microsoft Management Console/MMC) puis on clique sur ��Add/Remove Snap-in��, ��Add��, ��Certificates��, ��Add��, ��Computer Account�� et ��Next��. On choisit alors ��Local computer�� et ��Finish��. Dans ��IP Security Policy Management��, choisir ��Add��, ��Local Computer�� puis ��Finish��, ��Close�� et enfin ��OK��.
On peut � pr�sent ajouter le certificat .p12.
On clique sur la fl�che d'ajout pour ��Certificates (Local Computer)�� puis avec le bouton droit sur ��Personal�� avant de cliquer sur ��All Tasks��, ��Import�� et ��Next��. On renseigne ensuite le chemin d'acc�s au fichier .p12 (ou on navigue pour atteindre le fichier) et on clique sur ��Next��. On rentre alors le mot de passe de protection du fichier puis on clique sur ��Next��. On choisit ��Automatically select the certificate store based on the type of certificate��, ��Next��, ��Finish�� et on r�pond positivement � toutes les questions qui se pr�sentent. On sort de la console et on enregistre la s�quence correspondante dans un fichier pour ne pas avoir � se la farcir � chaque fois.
On installe ipsecpol.exe (Windows 2000) ou ipseccmd.exe (Windows XP) comme indiqu� dans la documentation de l'utilitaire ipsec. On �dite le fichier ipsec.conf de la machine MS Windows en rempla�ant "RightCA" par la sortie de la commande ��openssl x509 -in cacert.pem -noout -subject��; mise en forme comme indiqu� ci dessous (il faut remplacer les / par des virgules et changer le nom de quelques champs comme indiqu� dans l'exemple)�:
conn roadwarrior left=%any right=(ip_du_systeme_distant) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes conn roadwarrior-net left=%any right=(ip_du_systeme_distant) rightsubnet=(sous_reseau)/(masque_de_sous_reseau) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes |
On d�marre � pr�sent le lien.
Pour cela on invoque la commande ��ipsec.exe��. Voici un exemple de sortie de cette commande�:
C:\ipsec>ipsec IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller Getting running Config ... Microsoft's Windows XP identified Host name is: (local_hostname) No RAS connections found. LAN IP address: (local_ip_address) Setting up IPSec ... Deactivating old policy... Removing old policy... Connection roadwarrior: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (ip_of_remote_system)/255.255.255.255 CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... Connection roadwarrior-net: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (remote_subnet)/(remote_netmask) CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... C:\ipsec> |
On �met un ping vers la passerelle qui devrait afficher ��Negotiating IP Security�� pendant quelques instants avant de r�pondre au ping. Pour une T1 qui attaque un VPN derri�re un modem cable, il s'�coule typiquement de trois � quatre pings. Une fois la m�me chose faite depuis le r�seau interne � l'autre extr�mit� du lien, ce dernier devrait �tre op�rationnel.
Aujourd'hui on a le choix entre avoir recours � une PKI commerciale ou utiliser la sienne. Les PKI commerciales ont �t� cr��es � l'origine pour permettre le commerce �lectronqiue via Internet et plus particuli�rement sur le web. Le prix des certificats d�pendait du nombre d'h�tes. Le prix est plus �lev� que pour un nom de domaine parce que les co�ts d'identification des demandeurs sont plus �lev�s et parce qu'il n'y a pas de raison de se priver d'un pourcentage sur l'activit� des sites marchands. Etrangement ce type de vision atteint assez vite ses limites quand il ne s'agit plus seulement de s�curiser quelques serveurs, fussent-ils POP ou IMAP, mais que chaque h�te a besoin de son certificat quand ce n'est pas chaque utilisateur ou chaque application. Le co�t s'envole avec l'espoir d'un syst�me un tant soit peu administrable.
Pourquoi ne pas voir un certificat pour signer tous les autres�? Pour l'instant la seule solution consiste � construire sa propre autorit� de certification, ce qui permet une gestion souple mais limite la port�e du proc�d� � l'organisation qui y a recours. Le reste du monde doit r�cup�rer des clefs d'autorit�s de certification racine au cas par cas.
La solution consiste en une PKI unique g�r�e par une entit� centrale de fa�on analogue au DNS. On parle alors de PKI globale.
La s�curit� des ordinateurs personnels est devenu un sujet d'une telle importance aujourd'hui que Bill Gates a annonc� que Microsoft choisirait � pr�sent la s�curit� aux fonctionnalit�s si la d�cision devait �tre prise (NdT�: il _peut_ le dire).
Le nombre de nuisibles sur l'Internet a augment�. N'importe qui peut envoyer n'importe quoi n'importe o� et essayer de faire installer diverses saloperies sur les machines des autres. Une fois tout le monde identifi�, on sait au moins de qui se plaindre en cas de probl�me. C'est particuli�rement vrai dans le cas du courrier non-sollicit� pour lequel il est souvent difficile d'authentifier l'�metteur d'origine. Le traitement d'une donn�e peut �tre diff�rent si elle n'est pas tra�able au moyen d'un certificat. Il s'agit de la m�me approche que celle de la pr�sentation du num�ro d'appel t�l�phonique. Les certificats X.509v3 l'autorisent pour toutes les applications sur Internet, pour le courrier �lectronique (S/MIME), les transactions commerciales (HTTPS), les installations de logiciel�… Ils ne sont toutefois pas tr�s r�pandus en raison de leur co�t quand il faut les d�ployer � grande �chelle. Combien d'utilisateurs de Yahoo mail, d'Hotmail, de CA Online peuvent s'offrir un certificat �lectronique�? Il existe des projets de certificats gratuits mais ils ne peuvent prouver que l'existence d'une adresse �lectronique et n'ont pas les moyens de garantir l'identit� de leur propri�taire.
Une PKI Globale est n�cessaire. Les protocoles et les standards existent sans qu'il y ait besoin de r�inventer la roue. L'IETF dispose de l'outillage n�cessaire. Un serveur LDAP peut stocker les certificats, le DNS les annoncer et S/MIME s�curiser les courriers. Il ne reste plus qu'un probl�me de politique�: quels services doivent coop�rer au sein d'une PKI globale, qui doit offrir un tel service, quel sera le niveau de s�curit� offert�?
Cette partie sera tenue � jour au fur et � mesure de l'avancement des travaux du groupe de travail PKI de l'Internet Society. L'ISOC g�re �galement le TLD .org et dispose donc de moyens pour s'attaquer au probl�me du spam.