commit aad60a54f9c1073d5783fc88c014ac0883ba96b4 Author: Nicolas MASSE Date: Wed Sep 11 11:50:46 2019 +0200 migration from svn diff --git a/AEP/Install Manuelle/config_aep.reg b/AEP/Install Manuelle/config_aep.reg new file mode 100755 index 0000000..627913e Binary files /dev/null and b/AEP/Install Manuelle/config_aep.reg differ diff --git a/AEP/Install Manuelle/deploy.bat b/AEP/Install Manuelle/deploy.bat new file mode 100755 index 0000000..46b81a4 --- /dev/null +++ b/AEP/Install Manuelle/deploy.bat @@ -0,0 +1,10 @@ +@ECHO OFF + +sc stop rhcsproxy + +sleep 1 + +copy rhcsproxy.exe c:\AEP +copy messages.dll c:\AEP + +sc start rhcsproxy diff --git a/AEP/Install Manuelle/install.bat b/AEP/Install Manuelle/install.bat new file mode 100755 index 0000000..e3cc233 --- /dev/null +++ b/AEP/Install Manuelle/install.bat @@ -0,0 +1,17 @@ +@ECHO OFF + +rem Some information about the service +regedit /S register.reg + +rem Stop and unregister existing service +sc stop rhcsproxy +sc delete rhcsproxy + +rem Register the service +sc create rhcsproxy start= demand type= own error= normal binPath= "C:\AEP\rhcsproxy.exe -s" DisplayName= "Red Hat Auto Enrollment Proxy" + +rem Event log configuration +regedit /S service.reg + +rem AEP Configuration +regedit /S config_aep.reg diff --git a/AEP/Install Manuelle/profile_name.reg b/AEP/Install Manuelle/profile_name.reg new file mode 100755 index 0000000..e4641aa Binary files /dev/null and b/AEP/Install Manuelle/profile_name.reg differ diff --git a/AEP/Install Manuelle/register.reg b/AEP/Install Manuelle/register.reg new file mode 100755 index 0000000..9500155 Binary files /dev/null and b/AEP/Install Manuelle/register.reg differ diff --git a/AEP/Install Manuelle/service.reg b/AEP/Install Manuelle/service.reg new file mode 100755 index 0000000..6da9f65 --- /dev/null +++ b/AEP/Install Manuelle/service.reg @@ -0,0 +1,11 @@ +Windows Registry Editor Version 5.00 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\rhcsproxy] +"Description"="Forwards Certificate Requests from the domain to a Red Hat Certicate Authority" + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application] +@="RHCSProxy" + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\RHCSProxy] +"EventMessageFile"="C:\\AEP\\messages.dll" +"TypesSupported"=dword:0000000f diff --git a/AEP/Install Manuelle/soap_connector_address.reg b/AEP/Install Manuelle/soap_connector_address.reg new file mode 100755 index 0000000..56e5c6c Binary files /dev/null and b/AEP/Install Manuelle/soap_connector_address.reg differ diff --git a/AEP/UML/Statique.VSD b/AEP/UML/Statique.VSD new file mode 100755 index 0000000..cf5062a Binary files /dev/null and b/AEP/UML/Statique.VSD differ diff --git a/AEP/certreq/request.inf b/AEP/certreq/request.inf new file mode 100755 index 0000000..6374477 --- /dev/null +++ b/AEP/certreq/request.inf @@ -0,0 +1,20 @@ +[Version] + Signature="$Windows NT$" +[NewRequest] + Subject = "CN=systemx.test-aep3.idealx.com" + KeySpec = 1 + KeyLength = 1024 + Exportable = TRUE + MachineKeySet = TRUE + SMIME = False + PrivateKeyArchive = FALSE + UserProtected = FALSE + UseExistingKeySet = FALSE + ProviderName = "Microsoft RSA SChannel Cryptographic Provider" + ProviderType = 12 + RequestType = PKCS10 + KeyUsage = 0xa0 +[EnhancedKeyUsageExtension] + OID=1.3.6.1.5.5.7.3.1 +[RequestAttributes] + CertificateTemplate = DomainController diff --git a/Documents/Gestion de Projet/Projet1.mpp b/Documents/Gestion de Projet/Projet1.mpp new file mode 100755 index 0000000..c5b54c5 Binary files /dev/null and b/Documents/Gestion de Projet/Projet1.mpp differ diff --git a/Documents/Gestion de Projet/project1.gan b/Documents/Gestion de Projet/project1.gan new file mode 100755 index 0000000..a2e94f0 --- /dev/null +++ b/Documents/Gestion de Projet/project1.gan @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/Gestion de Projet/project1.png b/Documents/Gestion de Projet/project1.png new file mode 100755 index 0000000..3ff32da Binary files /dev/null and b/Documents/Gestion de Projet/project1.png differ diff --git a/Documents/Gestion de Projet/projet1.png b/Documents/Gestion de Projet/projet1.png new file mode 100755 index 0000000..d9a9797 Binary files /dev/null and b/Documents/Gestion de Projet/projet1.png differ diff --git a/Documents/Gestion de Projet/stage 1-2.gif b/Documents/Gestion de Projet/stage 1-2.gif new file mode 100755 index 0000000..34f79ec Binary files /dev/null and b/Documents/Gestion de Projet/stage 1-2.gif differ diff --git a/Documents/Gestion de Projet/stage 2-2.gif b/Documents/Gestion de Projet/stage 2-2.gif new file mode 100755 index 0000000..a10c087 Binary files /dev/null and b/Documents/Gestion de Projet/stage 2-2.gif differ diff --git a/Documents/Gestion de Projet/stage.gif b/Documents/Gestion de Projet/stage.gif new file mode 100755 index 0000000..f470c90 Binary files /dev/null and b/Documents/Gestion de Projet/stage.gif differ diff --git a/Documents/Gestion de Projet/stage.mpp b/Documents/Gestion de Projet/stage.mpp new file mode 100755 index 0000000..77d3679 Binary files /dev/null and b/Documents/Gestion de Projet/stage.mpp differ diff --git a/Documents/RapportDeStage/Makefile b/Documents/RapportDeStage/Makefile new file mode 100755 index 0000000..08f941a --- /dev/null +++ b/Documents/RapportDeStage/Makefile @@ -0,0 +1,22 @@ +SUBDIRS := $(wildcard doc-*) + +help: + @echo "Usages: make " + @echo " all : build all documentations" + @echo " new-doc : create a new documentation from a template" + @echo " clean : clean all documentations" + +all: $(SUBDIRS) + +$(SUBDIRS): + make -C $@ all + +clean: + @for i in $(SUBDIRS); do make -C "$$i" clean || exit 1; done + +new-doc: template + @echo "Enter the name of your documentation (no space, special chars, etc.): " + @echo -n "name> " ; read name ; echo "Creating doc-$$name..." ; cp -r template "doc-$$name" + +.PHONY: $(SUBDIRS) new-doc all help clean + diff --git a/Documents/RapportDeStage/doc-rapport/Makefile b/Documents/RapportDeStage/doc-rapport/Makefile new file mode 120000 index 0000000..3a269a0 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/Makefile @@ -0,0 +1 @@ +../globals/Makefile \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/docbook b/Documents/RapportDeStage/doc-rapport/docbook new file mode 120000 index 0000000..42b7ae3 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/docbook @@ -0,0 +1 @@ +../globals/docbook \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/fop.xconf b/Documents/RapportDeStage/doc-rapport/fop.xconf new file mode 120000 index 0000000..9113e46 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/fop.xconf @@ -0,0 +1 @@ +../globals/fop.xconf \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/AEP-Fonct.png b/Documents/RapportDeStage/doc-rapport/img/AEP-Fonct.png new file mode 120000 index 0000000..95a3181 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/AEP-Fonct.png @@ -0,0 +1 @@ +../../../Schemas/AEP-Fonct.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/AEP-IDXPKI.png b/Documents/RapportDeStage/doc-rapport/img/AEP-IDXPKI.png new file mode 120000 index 0000000..0fdd77a --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/AEP-IDXPKI.png @@ -0,0 +1 @@ +../../../Schemas/AEP-IDXPKI.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/CMC_routage_aggregation.png b/Documents/RapportDeStage/doc-rapport/img/CMC_routage_aggregation.png new file mode 120000 index 0000000..42f17d3 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/CMC_routage_aggregation.png @@ -0,0 +1 @@ +../../../Schemas/LRA_routage_aggregation.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/IDX-Enroll.png b/Documents/RapportDeStage/doc-rapport/img/IDX-Enroll.png new file mode 120000 index 0000000..62cddf0 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/IDX-Enroll.png @@ -0,0 +1 @@ +../../../Schemas/IDX-Enroll.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/PKI_MS-Fonct.png b/Documents/RapportDeStage/doc-rapport/img/PKI_MS-Fonct.png new file mode 120000 index 0000000..005f0b8 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/PKI_MS-Fonct.png @@ -0,0 +1 @@ +../../../Schemas/PKI_MS-Fonct.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/autoenroll.png b/Documents/RapportDeStage/doc-rapport/img/autoenroll.png new file mode 120000 index 0000000..2e49dec --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/autoenroll.png @@ -0,0 +1 @@ +../../../Schemas/autoenroll.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/err1.png b/Documents/RapportDeStage/doc-rapport/img/err1.png new file mode 100755 index 0000000..cae9073 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/err1.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/err2.png b/Documents/RapportDeStage/doc-rapport/img/err2.png new file mode 100755 index 0000000..d6fc788 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/err2.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/gantt.png b/Documents/RapportDeStage/doc-rapport/img/gantt.png new file mode 120000 index 0000000..e33b8a2 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/img/gantt.png @@ -0,0 +1 @@ +../../../Gestion de Projet/stage.png \ No newline at end of file diff --git a/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical-long.png b/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical-long.png new file mode 100755 index 0000000..813f0f1 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical-long.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical.png b/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical.png new file mode 100755 index 0000000..e9dfa03 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/logos/ensi-vertical.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/logos/ensi.png b/Documents/RapportDeStage/doc-rapport/img/logos/ensi.png new file mode 100755 index 0000000..3f5feb3 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/logos/ensi.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/logos/idealx.png b/Documents/RapportDeStage/doc-rapport/img/logos/idealx.png new file mode 100755 index 0000000..761550e Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/logos/idealx.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/ms1.gif b/Documents/RapportDeStage/doc-rapport/img/ms1.gif new file mode 100755 index 0000000..2f8b214 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/ms1.gif differ diff --git a/Documents/RapportDeStage/doc-rapport/img/ms2.gif b/Documents/RapportDeStage/doc-rapport/img/ms2.gif new file mode 100755 index 0000000..04d457e Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/ms2.gif differ diff --git a/Documents/RapportDeStage/doc-rapport/img/opentrustnew.png b/Documents/RapportDeStage/doc-rapport/img/opentrustnew.png new file mode 100755 index 0000000..62644f5 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/opentrustnew.png differ diff --git a/Documents/RapportDeStage/doc-rapport/img/statique.png b/Documents/RapportDeStage/doc-rapport/img/statique.png new file mode 100755 index 0000000..80a4590 Binary files /dev/null and b/Documents/RapportDeStage/doc-rapport/img/statique.png differ diff --git a/Documents/RapportDeStage/doc-rapport/include/appendices.xml b/Documents/RapportDeStage/doc-rapport/include/appendices.xml new file mode 100755 index 0000000..35c0ce1 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/appendices.xml @@ -0,0 +1,166 @@ + + Description du protocole CMC + + CMC signifie "Certificate Management over CMS" et CMS signifie "Cryptographic Message Syntax". C'est un protocole normalisé par l'IETF sous le numéro 2797 qui permet l'enregistrement de certificats (enrollment), tout comme SCEP. Alors que SCEP est principalement utilisé par CISCO, CMC est surtout utilisé par Microsoft. + Il est basé sur les standards PKCS#7, PKCS#10 et CRMF. Une attention particulière a été apportée lors de la conception de ce protocole afin de permettre aux clients de continuer à utiliser des objets PKCS#7 et PKCS#10 lorsque c'est possible. + Le protocole CMC utilise, lorsque c'est possible, un simple aller-retour pour effectuer un enregistrement. Cette particularité implique certaines propriétés telles que l'aggrégation et le routage au niveau des autorités d'enregistrement locales. + Les autorités d'enregistrement locales (LRA, Local Registration Authority) définies dans la norme sont des entités situées entre l'AC et le client. Elles peuvent aggréger les demandes des clients, les aiguiller vers différentes AC, archiver les clés privées ou encore ajouter des extensions aux demandes. + +
+ Deux modes de fonctionnement + + +
+ + + Enfin, le protocole propose des services optionnels tels que : l'émission différée, la révocation de certificats ainsi que la récupération de certificats et de listes de révocations. + + + + Structure générale du protocole + Dans le cas le plus simple, le client envoie sa CSR (au format PKCS#10) et le serveur retourne le certificat au format PKCS#7. C'est le format simple, il n'y a alors pas de gestion des erreurs, ni de service supplémentaire. + Dans les autres cas, le protocole utilise des messages au format complet avec un module ASN.1 comme "glue" entre les formats PKCS#7, 10 et CRMF. Ces messages peuvent contenir plusieurs demandes de certificats, parfois enveloppées dans des messages CMC (en cas de passage par une LRA). + Il est important de noter que la RFC n'impose pas de protocole de transport et certains produits pourraient, par exemple, utiliser un protocole propriétaire pour transmettre les messages CMC. + + + + Attributs de contrôle + Un attribut de contrôle est une valeur qui altère la façon dont l'AC (ou une LRA) va traiter la demande de certificat. Inclu dans une réponse de l'AC, il précise l'état de traitement de la requète (OK, erreur, en cours). + Sauf exception, un attribut de contrôle s'applique au message entier, et donc à plusieurs demandes. + + + + Preuve de possession + Les spécifications prévoient l'utilisation de preuves de possession (POP) afin de s'assurer que le client dispose bien de la clé privée. La méthode la plus simple consiste à signer la requète avec la clé privée et pour les clés de chiffrement uniquement, un mécanisme alternatif de type défi-réponse est prévu. Ce mécanisme nécessitant plusieurs échanges, la preuve de possession peut être effectuée par une autorité d'enregistrement locale. + + + + Preuve d'identité + + Au travers du protocole, les clients demandeurs d'un certificat peuvent prouver leur identité au moyen d'un secret partagé avec l'AC. Ce secret partagé peut être généré par un jeton matériel. + La preuve d'identité étant transmise séparément de la preuve de possession, il est nécessaire de lier ces deux informations. La RFC propose deux méthodes : l'une est basée sur un témoin cryptographique (HMAC d'un nombre aléatoire) et l'autre requiert une correspondance entre le secret partagé et le DN de la requète. + + + + Comparaison avec SCEP + + + + + + + + SCEPCMC + Algorithmes supportésRSADSA et DH, RSA en option + Enregistrement de certificatouioui + Emission différéeouioui + Récupération d'un certificatoui + Récupération du certificat racineouifacultatif + Récupération de CRLouifacultatif + Gestion des LRAoui + Révocation de certificatoui + Protocole de transportHTTPau choix + Confidentialitéouià la carte + Preuve de possessionlimitéeSe limite à une signature de la requète, pas de gestion des clés de chiffrement seulement.complète + Gestion de l'autorité de séquestreoui + + + + + +
+ + + Diagramme statique d'AEP + + + + + + + Interface ICertRequestD + +[ + object, + uuid(d99e6e70-fc88-11d0-b498-00a0c90312f3), + dual, + helpstring("Red Hat ICertRequestD Interface"), + pointer_default(unique) +] +interface ICertRequestD: IUnknown +{ + import "oaidl.idl"; + + + HRESULT Request( + [in] DWORD dwFlags, + [unique][string][in] const wchar_t * pwszAuthority, + [ref][out][in] DWORD * pdwRequestId, + [out] DWORD * pdwDisposition, + [unique][string][in] const wchar_t * pwszAttributes, + [ref][in] const CERTTRANSBLOB *pctbRequest, + [ref][out] CERTTRANSBLOB * pctbCertChain, + [ref][out] CERTTRANSBLOB * pctbEncodedCert, + [ref][out] CERTTRANSBLOB * pctbDispositionMessage); + + HRESULT GetCACert( + [in] DWORD fchain, + [unique][string][in] const wchar_t * pwszAuthority, + [ref][out] CERTTRANSBLOB * pctbOut ); + + HRESULT Ping( + [unique][string][in] const wchar_t * pwszAuthority); + +}; + +[ + object, + uuid(5422fd3a-d4b8-4cef-a12e-e87d4ca22e90), + dual, + helpstring("Red Hat ICertRequestD2 Interface"), + pointer_default(unique) +] +interface ICertRequestD2: ICertRequestD +{ + import "oaidl.idl"; + + HRESULT Request2( + [unique][string][in] const wchar_t * pwszAuthority, + [in] DWORD dwFlags, + [unique][string][in] const wchar_t * pwszSerialNumber, + [ref][out][in] DWORD * pdwRequestId, + [out] DWORD * pdwDisposition, + [unique][string][in] const wchar_t * pwszAttributes, + [ref][in] const CERTTRANSBLOB *pctbRequest, + [ref][out] CERTTRANSBLOB * pctbFullResponse, + [ref][out] CERTTRANSBLOB * pctbEncodedCert, + [ref][out] CERTTRANSBLOB * pctbDispositionMessage + ); + + + HRESULT GetCAProperty( + [unique][string][in] const wchar_t *pwszAuthority, + [in] LONG PropId, + [in] LONG PropIndex, + [in] LONG PropType, + [ref][out] CERTTRANSBLOB *pctbPropertyValue + ); + + + HRESULT GetCAPropertyInfo( + [unique][string][in] const wchar_t *pwszAuthority, + [out] LONG *pcProperty, + [ref][out] CERTTRANSBLOB *pctbPropInfo + ); + + + HRESULT Ping2( + [unique][string][in] const wchar_t * pwszAuthority); + + +}; + + + diff --git a/Documents/RapportDeStage/doc-rapport/include/biblio.xml b/Documents/RapportDeStage/doc-rapport/include/biblio.xml new file mode 100755 index 0000000..8b85f1c --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/biblio.xml @@ -0,0 +1,47 @@ + + Bibliographie + + GRIMES, Richard, + <emphasis>Professionnal DCOM Programming</emphasis>. + WROX Press, 1997. + 565 pages. + 1-861000-60-X + + + + MYERS, et al. + <emphasis>RFC 2797 : Certificate Management Messages over CMS</emphasis>. + IETF, 2000. + 47 pages. + + + + LOWE-NORRIS, Alistair G., + <emphasis>Windows 2000 Active Directory</emphasis>. + O'Reilly, 2000. + 621 pages. + 1-56592-638-2 + + + + KEITH, Brown, + <emphasis>The .NET Developer's Guide to Windows Security</emphasis>. + Addison Wesley, 2004. + 379 pages. + 0-321-22835-9 + + + + GUTMANN, Peter, + <emphasis>Plug-and-Play PKI: A PKI your Mother can Use</emphasis>. + 2003. + + + + <emphasis>Guidelines for enabling smart card logon with third-party certification authorities</emphasis>. + Microsoft. [en ligne]. + 2007 [page consultée le 15/06/2007]. + Disponible sur http://support.microsoft.com/kb/281245 + + + diff --git a/Documents/RapportDeStage/doc-rapport/include/conclusion.xml b/Documents/RapportDeStage/doc-rapport/include/conclusion.xml new file mode 100755 index 0000000..55ca1b3 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/conclusion.xml @@ -0,0 +1,20 @@ + + Bilan + + + Ce stage chez IDEALX m'a permis d'acquérir de nombreuses connaissances : technologies de sécurité Microsoft, + programmation DCOM, plateforme .NET et surtout l'aspect organisationnel des infrastructures de gestion de clé. + Au delà de ces connaissances, j'ai aussi développé certaines de mes compétences : principalement l'organisation + et la communication. + + + + Durant les huit semaines de ce projet, j'ai procédé à une étude du sujet, défini le cadre technique du projet, mis en place un environnement de test et documenté le projet. Ces actions ont abouti à un prototype fonctionnel et à l'acceptation d'une proposition commerciale par un important client d'IDEALX. + + + + Sur proposition conjointe de Mathias BROSSARD, mon maître de stage et Ayoub OTMANI, mon tuteur ENSICAEN, il m'a été proposé de participer à un autre projet qui permettra de répondre aux exigences du cursus Master Recherche AMI : équilibrage de charge et haute disponibilité d'un serveur d'horodatage. Le projet CMC étant maintenant sur les rails, j'ai saisi cette opportunité. Après transfert de compétences et finalisation des dernières tâches en cours, je prendrai donc part à ce nouveau projet. + + + + diff --git a/Documents/RapportDeStage/doc-rapport/include/existant.xml b/Documents/RapportDeStage/doc-rapport/include/existant.xml new file mode 100755 index 0000000..eac38d9 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/existant.xml @@ -0,0 +1,148 @@ + + Étude de l'existant + + + Cette partie présente deux solutions existantesIl existe également une troisième solution : SCEP. Voir http://www.ietf.org/internet-drafts/draft-nourse-scep-15.txt. permettant l'auto-enrôlement : IDX-Enroll, un logiciel développé par IDEALX, et CMC, un protocole géré nativement par les clients Microsoft. + + + + IDX-Enroll + + + Afin de combler le besoin d'enrôlement automatique de ses clients, IDEALX a fait développer le logiciel IDX-Enroll dont le fonctionnement est le suivant : + + + + la solution se présente sous la forme d'un package MSI que l'on déploie sur les contrôleurs du domaine par une politique de groupe (aussi appelée GPO). + + + + + le package MSI contient une clé privé et un certificat d'authentification qu'IDX-Enroll utilise pour s'authentifier auprès du connecteur SOAP de la PKI. + + + + + Toutes les opérations cryptographiques sont effectuées via le connecteur SOAP sans validation (ni d'un opérateur, ni d'un annuaire d'entreprise). + + + + + +
+ + Fonctionnement de l'auto-enrôlement avec IDX-Enroll + + +
+ + + Cette solution présente de multiples inconvénients: + + + + + Elle est intrusive : un logiciel doit être déployé sur tous les contrôleurs de domaine, ce qui implique de tester le logiciel sur les différentes configurations du client. + + + + + Les informations d'authentification (clé privée et certificat) sont déployées avec le logiciel et par conséquent, sont les mêmes pour tous les contrôleurs de domaine. + + + + + La validation des informations du certificat est effectuée par IDX-Enroll lui-même. + + + + + + + Au vu de ces inconvénients, le développement d'une autre solution s'avère nécessaire. + +
+ + + Le protocole CMC + + + CMC est le protocole cryptographique utilisé par les clients Microsoft pour obtenir un certificat lors d'un enrôlement (manuel ou automatique). + Ce protocole standardisé par l'IETF sous le numéro 2797 précise la syntaxe des messages cryptographiques utilisés lors d'un enrôlement. + Une description détaillée du protocole est disponible en . + + +
+ Fonctionnement de l'auto-enrôlement via CMC + + +
+ + + À partir de Windows 2003 Server et Windows XP, Microsoft fournit en standard un client d'enrôlement CMC prévu pour s'interfacer avec sa PKI (et uniquement celle-ci). Ce client tire pleinement partie de l'infrastructure de sécurité Microsoft. En effet, il s'interface avec Active Directory pour obtenir sa configuration et utilise les mécanismes d'authentification standards Windows (Kerberos). De cette manière, le processus d'enrôlement est entièrement automatique et authentifié. De plus, les informations du certificat sont générées par l'AC à partir d'un référentiel de confiance : l'Active Directory. + + + + AEP + + + AutoEnrollment Proxy (AEP) est un logiciel Open Source initialement réalisé par Red Hat, et maintenu à présent par le projet Fedora Directory Server. + Après enregistrement dans l'Active Directory, il est vu par les client Windows comme une PKI Microsoft, et ainsi permet d'utiliser le client d'enrôlement + natif sans la PKI Microsoft. + + + + N'utilisant pas l'autorité de certification Microsoft, AEP n'est pas pour autant une AC ! Il a été conçu pour transmettre les demandes de certificat à une PKI tierce : Red Hat Certificate System, qui est la développée par Red Hat (originellement conçue par Netscape). + + +
+ + + Comparaison des coûts + + + Coûts liés à IDX-Enroll + + + De par sa nature, IDX-Enroll implique certains coût pour le client : + + + le coût de validation du logiciel : il est dû au fait que le client doit tester le logiciel sur ses plateformes de test avant de le déployer en production. Ce coût est estimé à 40-50 jours-homme. + + + le coût de la revue de supportabilité. + La revue de supportabilité s'applique à un projet informatique, qu'il s'agisse d'une première installation, d'une mise à jour ou d'une migration liée aux technologies Microsoft. L'objet de ce service est de procéder à un examen de l'environnement du client et d'émettre une série de recommandations. En exploitant ces recommandations, le client évite d'éventuels problèmes et s'assure ainsi du bon déroulement des différentes phases de son projet.) + + + + le coût de déploiement : il est dû au fait qu'un déploiement n'est en général pas effectué en une seule fois mais progressivement en s'assurant du bon déroulement du processus. + + + le coût de maintenance : à chaque nouvelle version de IDX-Enroll, le client doit re-tester la solution et la déployer. + + + + + + + Coûts liés à AEP + + + En comparaison, les coûts liés à l'utilisation d'AEP sont bien moindres. Aucune installation, aucun paramètrage sur les contrôleurs de domaine n'étant nécessaire, il n'implique que des coûts de déploiement : enrôler ces machines petit à petit en s'assurant du bon déroulement de la procédure. + + + + + Comparaison + + + Il s'avère que cette dernière solution est bien plus avantageuse que IDX-Enroll. L'équipe commerciale/avant vente estime d'ailleurs qu'elle pourrait diviser les coûts d'enrôlement des contrôleurs de domaine par dix. + + + + + +
+ diff --git a/Documents/RapportDeStage/doc-rapport/include/integration/gen.awk b/Documents/RapportDeStage/doc-rapport/include/integration/gen.awk new file mode 100755 index 0000000..c2ed738 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/integration/gen.awk @@ -0,0 +1,21 @@ +#!/usr/bin/awk -f + +BEGIN { + print ""; + print ""; + print ""; + print ""; + print ""; + FS=","; + print "#Description"; +} + +{ + print "" $1 "" $2 ""; +} + +END { + print ""; + print ""; + print ""; +} diff --git a/Documents/RapportDeStage/doc-rapport/include/integration/query.csv b/Documents/RapportDeStage/doc-rapport/include/integration/query.csv new file mode 100755 index 0000000..dc2c350 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/integration/query.csv @@ -0,0 +1,74 @@ +1519,La génération des entités locales a planté (impossible d'afficher la page),nmasse,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1520,Sous IE : Les barres bleues cliquables n'ont pas le bon pointeur de souris,somebody,defect,new,lowest,IDX-PKI Roadmap +1522,Erreurs dans les logs apache: des fichiers Javascript n'ont pas été trouvés,ndelon,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1527,Après importation (CERT_EXTERNES_AJOUT)_ impossible de retrouver les certificats importés,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1528,La commande idxpki-camgr ne vérifie pas la validité de ses paramètres (CERT_EXTERNES_AJOUT),rrenard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1535,Aucun mail envoyé après un recouvrement sur l'AE,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1538,"Insecure dependency" lors d'un cron (/opt/idxpki/sbin/remove-p12.pl),fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1547,Révocation par lot: l'élément "Liste des demandes de révocation" reste sélectionné,mbrossard,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1548,"Télécharger le PKCS#7 avec la chaine de certification" ne contient que le certificat final,rrenard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1552,L'interface de config de l'autofill manque de cohérence avec les autres interfaces,somebody,enhancement,new,low,IDX-PKI Roadmap +1554,La liste des profils de certificat dans la gestion des certificats n'est très lisible,somebody,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1559,Faute de frappe : un "de" en trop lors d'une demande de certificat centralisée,somebody,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1560,Les mails envoyés à l'administrateur lors d'une requète SCEP ne sont pas complets,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1561,Revocation SCEP : "Code de révocation présent dans la demande de révocation mais non requis",fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1568,[PUBLICATION_CERT_SIMPLE_REPO_UNAV_2] Une seule tentative de publication effectuée,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1569,[PUBLICATION_CERT_MULTI_PROFILE] Seul le premier profil de publication est pris en compte,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1570,Petit bug d'affichage dans la gestion des AC,mbrossard,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1571,[PUBLICATION_CRL] Rien n'est publié_ mais les logs indiquent que tout s'est bien passé,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1573,Il serait bien de pouvoir configurer le délai d'attente après un publication ratée,somebody,enhancement,new,normal,IDX-PKI Roadmap +1575,Problème lors du recouvrement avec l'admin.p12,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1579,Amélioration de la CSS avec IE7,somebody,enhancement,new,lowest,IDX-PKI Roadmap +1582,Warnings dans les logs d'apache,mbrossard,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1583,Il n'est pas possible d'émettre un certificat avec un DN vide,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1587,Confiance aux AC: Message d'erreur pas explicite,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1588,Confiance aux AC: Impossible d'uploader un certificat,mbrossard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1589,Erreur interne lors du rejet d'une demande de certificat,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1593,Impossible de supprimer une AC en cours de création,somebody,enhancement,new,normal,IDX-PKI Roadmap +1598,Multiples erreurs avec IE7 lors de l'ajout d'une AC,ndelon,defect,new,normal,IDX-PKI 3.4 : Maintenance +1603,Révocation des certificats d'AC avec IE(7): Comportement limite,somebody,enhancement,new,normal,IDX-PKI Roadmap +1606,Yellow message incorrect dans la gestion des profils,blepilliez,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1607,[CERT_CENT_P12_USER_PWD_ADMIN] No encryption certificate is associated to your DN_ the mail will be sent unencrypted.,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1608,[CERT_CENT_AE_OK] Mail chiffré alors qu'il ne devrait pas l'être,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1609,[PKI_CERT_SERV_P10] Messages d'erreur incohérents,fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1615,(édition d'un profil avec IE) Incohérence de l'interface profil pré-validé centralisé,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1617,Mail de révocation: il y a un [COMMENT] dans le corps du mail,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1625,Autofill_ champs obligatoires_ erreur interne,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1626,Il n'est pas possible de supprimer des RDNs et des attributs d'un profil d'autofill,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1627,La recherche avec "*" ne fonctionne pas dans l'interface d'édition des droits sur les profils et les zones,fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1629,Il est possible d'associer un profil de mail "Rejet d'une demande de certificat" à un profil de certificat avec validation externe,ndelon,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1632,Amélioration du #1155: Droit d'un certificat révoqué,somebody,enhancement,new,low,IDX-PKI Roadmap +1633,Langue incorrecte pour l'envoi des mails,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1634,En modifiant l'URL de récupération d'un certificat_ il est possible de modifier le numéro de tracking de cette action dans les logs,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1635,Validation d'une demande de révocation: manque de cohérence,mbrossard,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1637,Edition d'un profil de certificat: légère amélioration de l'interface anglaise,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1655,Traduction manquante pour AppLogs/detailkey:hash_function,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1657,[CERT_RECH_PAR_SERIAL] Accepter les numéros de série préfixé par un 0,mbrossard,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1658,[CERT_RECH_PAR_DN] Supprimer les espaces après les virgules,mbrossard,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1663,Faute de frappe dans l'interface SCEP anglaise,blepilliez,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1671,Cases à cocher "liées" sous IE7 : Comportement erratique,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1676,Révocation par lot : Erreur interne,mbrossard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1681,[CERT_SCEP_CONF_ROUTEUR] Erreur lors du "crypto pki authenticate ...",somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1683,Confiance aux AC : Segfault de httpd,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1699,Renouvellement: amélioration des traductions anglaises,gsedratidinet,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1700,Renouvellement Hors Service,gsedratidinet,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1708,La langue associée à l'admin.p12 est toujours l'anglais,ndelon,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1709,La confirmation d'une demande de certificat est en anglais dans l'interface française,somebody,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1713,Méta-données: la langue devrait être attachée au DN et non au certificat,somebody,enhancement,new,normal,IDX-PKI Roadmap +1714,Gestion des langues: c'est pas vraiment intuitif...,somebody,enhancement,new,normal,IDX-PKI Roadmap +1726,Imprécision dans l'interface scep anglaise,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1727,Politique de mot de passe_ profil centralisé avec mot de passe aléatoire_ erreur sur l'AC,gsedratidinet,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1730,Création d'un profil d'autofill: préciser le terme "identifiant utilisateur",somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1735,[PKI_CERT_SERV_LOG] Erreur interne,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1738,Recouvrement de son propre certificat de chiffrement: le mail est envoyé chiffré,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1739,Profil avec prévalidation: la langue associée aux certificats est toujours l'anglais,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1742,Validation d'une demande de certificat: incohérence anglais/français,somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1744,Gestion des adresses emails dans l'interface de révocation par lot,somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1745,Révocation de l'admin.p12: aucune demande de certificat n'est possible après !,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1756,SCEP: Code de révocation demandé sur l'EE alors qu'il n'y a pas besoin,somebody,enhancement,new,low,IDX-PKI Roadmap +1759,Enrollment automatique SCEP: le passage en mode manuel devrait être loggué,somebody,enhancement,new,normal,IDX-PKI Roadmap +1767,Support d'IE sous Vista,somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1771,Profil avec prévalidation: l'opérateur devrait pouvoir choisir la langue de l'utilisateur,somebody,enhancement,new,normal,IDX-PKI Roadmap +1772,Les mails de notification de révocation avec un profil "serveur" sont envoyés de "root@localhost",somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1773,Catégories: Yellow message incorrect,somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1774,Gestion des groupes: L'interface "Droits d'administration" nécessite deux enregistrements pour être fonctionnelle,somebody,enhancement,new,normal,IDX-PKI 3.4 : Maintenance diff --git a/Documents/RapportDeStage/doc-rapport/include/preface.xml b/Documents/RapportDeStage/doc-rapport/include/preface.xml new file mode 100755 index 0000000..755237c --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/preface.xml @@ -0,0 +1,36 @@ + + Introduction + + + Dans le cadre de mes études à l'ENSICAEN, j'ai été en stage au sein d'IDEALX trois mois durant. + Lors de cette période, j'ai participé à la vie de l'entreprise en joignant une équipe d'intégrateurs pendant cinq semaines, mais j'ai également, pendant huit semaines, réalisé mon projet de fin d'étude : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft. + + + + Ce projet a pour objectif de simplifier la phase de déploiement des certificats dans un environnement Microsoft, permettant ainsi de diminuer le TCOTotal Cost of Ownership ou Coût total de possession. C'est un coût qui intégre tous les éléments constitutifs d'un produit manufacturé (inventé par le Gartner Group en 1987). d'OpenTrust-PKI. + + + + Ce présent rapport expose le travail que j'ai réalisé pendant ce stage, le contexte technique nécessaire à sa compréhension et les résultats obtenus. + + + + Remerciements + + + Tout au long de mon stage j'ai bénéficié de l'aide de nombreuses personnes et je leur en suis très reconnaissant. + Je remercie tout particulièrement : + + Mathias BROSSARD, mon maître de stage, pour ses conseils avisés, + Ayoub OTMANI, mon tuteur à l'ENSICAEN, + David PEPIN, mon binôme, pour son aide tout au long du stage, + Fredéric GARZON et Nicolas DELON, pour leurs innombrables explications, + Sherley BROTHIER, directeur technique, pour son soutien, + Steve PARKINSON, en charge du projet AEP chez Red Hat, pour son aide inestimable, + tout le personnel d'IDEALX, pour leur soutien constant. + + + + + + diff --git a/Documents/RapportDeStage/doc-rapport/include/pres_ent.xml b/Documents/RapportDeStage/doc-rapport/include/pres_ent.xml new file mode 100755 index 0000000..f452f62 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/pres_ent.xml @@ -0,0 +1,105 @@ + + Présentation de l'entreprise + + + IDEALX a été créée en février 2000 et s'est fixée + comme objectif de devenir le partenaire Open Source de référence des + grands comptes et administrations. Pour atteindre cet objectif, + IDEALX s'est attachée à construire et à proposer des solutions + packagées et des services à haute valeur ajoutée permettant à ses + clients de mettre en oeuvre des projets stratégiques à base de + composants Open Source. + + + + Par le mode de sélection de ses intervenants, à la fois sur des + critères d'excellence technique et d'adhésion au modèle Open Source, + IDEALX a constitué une équipe homogène de haut niveau. L'importance + accordée en interne à la R&D ainsi que la + publication de ses résultats sur le site http://www.idealx.org + témoignent de cet engagement fort. + + + + IDEALX est devenu en 5 ans le leader en France des infrastructures de confiance, sécurité et dématérialisation, + avec plus de 100 références grands comptes et administrations réunis au sein du C3I, le Club des Clients + Contributeurs IDEALX. + + + + IDEALX: éditeur de logiciel + + + Tout d'abord intégrateur de briques technologiques Open Source pour les applications de sécurité, IDEALX est maintenant + éditeur de logiciel spécialisé dans les infrastructures de confiance Open Source. En France et parmis les grands comptes, + IDEALX représente 50% de part de marché avec des clients tels que Total, Areva, Gaz de France, La Poste, l'ANPE, le + Ministère des finances, Sanofi-Aventis, AGF, GAN, Thales, et bien d'autres encore. + + + + IDEALX est profitable depuis 2003 et a génèré un chiffre d'affaire de 10 millions d'euros en 2006. De plus, + elle prévoit une croissance de 40% cette année, compte recruter 15 nouveaux collaborateurs et souhaite se développer à l'international. + + + + + L'offre OpenTrust + + + L'offre OpenTrust regroupe les produits phares d'IDEALX : OpenTrust PKI, OpenTrust SCM, OpenTrust XCH et OpenTrust SPI. + Elle répond aux problématiques de sécurisation du SI et de dématérialisation des processus et applications. + Au lieu d'adopter une démarche isolée et spécifique pour chaque domaine ou application, cette offre propose + une infrastructure de confiance globale et multi-applicative. + + +
+ + L'offre OpenTrust + + +
+ + + OpenTrust-PKI + + + OpenTrust-PKI est l'infrastructure de gestion de clefs (PKI, en anglais) développée par IDEALX. Elle est simple, + ergonomique, complète et conçue pour pouvoir être déployée largement. Les solutions + concurrentes sont réputées être plus chères et d'administration complexe. + + + + + OpenTrust-SCM + + + OpenTrust-SCM (SCM pour Smart Card Manager) est un gestionnaire de cartes (à puce, sans contact, etc): il gère le cycle de vie + de la carte, est compatible avec plusieurs formats de cartes et d'applications, fournit un client facile à déployer et + peut interagir nativement avec Open-Trust-PKI. + + + + + OpenTrust-XCH + + OpenTrust-XCH (XCH pour Exchanger) est un outil sécurisé d'échange et de mise à disposition de fichiers. Il permet à des + utilisateurs de déposer des fichiers, et de les mettre en accès à d'autres utilisateurs ou à des personnes extérieures, avec + utilisation de droits d'accès (consultation - modification - droit de joindre des fichiers, avec prise en compte de la date). + Il assure la confidentialité des échanges, l'authentification des utilisateurs et la traçabilité des actions. + + + + + OpenTrust-SPI + + OpenTrust-SPI (SPI pour Signature and Proof Infrastructure) est un outil de signature électronique de documents et + de gestion de la preuve. Il est prévu pour la création et la validation de signature, la génération de compléments de preuve + à valeur probante, et l'archivage légal. + Il est par exemple utilisé pour la gestion des contrats de travail au sein de plus de 90% des agences d'interim en France. + + + +
+
+ diff --git a/Documents/RapportDeStage/doc-rapport/include/pres_stage.xml b/Documents/RapportDeStage/doc-rapport/include/pres_stage.xml new file mode 100755 index 0000000..b4bf7a7 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/pres_stage.xml @@ -0,0 +1,115 @@ + + Présentation du stage + + + Cette partie présente le sujet de mon stage : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft -- ainsi que le contexte technique nécessaire à sa compréhension. + + + + Origine des besoins + + + Le sujet de ce stage vient d'un besoin assez éloigné : l'ouverture de session par carte à puce. En effet, une grande banque française, important client d'IDEALX, souhaite mettre en place cette solution au sein de leurs agences. Pour cela, les contrôleurs de domaines doivent nécessairement avoir un certificat leur permettant de prouver leur identité (cf. ). + + + + Avec un nombre assez restreint de contrôleurs, ce prérequis ne serait pas un problème. Cependant, ce client en possède un nombre impressionnant : au minimum un par agence, pour un total de plusieurs centaines de contrôleurs de domaine. + De telles proportions écartent immédiatement toutes intervention manuelle et il est nécessaire de songer à un processus automatique : l'auto-enrôlement. + + + + + OpenTrust-PKI + + + OpenTrust-PKI est une PKI souple et performante : elle dispose de nombreuses qualités techniques et fonctionnelles. + + + + Elle est dotée de plusieurs modes de fonctionnement : en ligne (pour les AC opérationnelles) ou hors ligne (pour les AC racines), mono machine ou multi machines. Et afin d'accentuer encore la sécurité de l'infrastructure, elle s'interface avec les principaux HSM du marché (Bull, nCipher, NetSafe). + + + + Interopérable avec les principaux produits du marché, elle supporte les protocoles SCEP (enrôlement de certificat) et OCSP (validation de certificat) et s'interface avec l'autorité d'horodatage développée par IDEALX. + + + + Cependant, le coté fonctionnel n'est pas en reste : tout est fait pour faciliter le déploiement massif de certificats, que ce soit dans le cas d'une installation initiale ou bien dans le cas de la migration d'une PKI existante : + + + Indépendamment de l'AC, les certificats émis sont paramétrés (usages de la clé, identité du sujet, modalités de délivrance, etc.) par des profils intégralement modifiables par l'utilisateur. + + + + Les informations demandées à l'utilisateur se réduisent à leur strict minimum : lorsque c'est possible, elles sont puisées dans des sources d'information existantes : annuaire d'entreprise, certificat utilisateur déjà existant et éventuellement via un plugin spécifique aux besoins du client. + + + Poussée à son paroxysme (toutes les informations sont puisées d'une source fiable), cette fonction autorise la délivrance de certificats sans intervention d'un opérateur de validation. + + + + + + Afin de s'intégrer au mieux aux processus de l'entreprise, OpenTrust-PKI supporte plusieurs workflows de validation : par un opérateur, par une source externe ou encore au moyen d'une pré-validation. + + + Et éventuellement, si ces workflows ne suffisent pas, les fonctions les plus courantes de la PKI sont accessible au travers d'un connecteur SOAP, ce qui permet de les intégrer aux processus déjà existants au sein de l'entreprise. + + + + + + + + + Auto-enrôlement des clients Microsoft + + + + Définition de l'auto-enrôlement + + + Dans un article daté de 2003, Peter Gutmann, chercheur en sécurité informatique, a esquissé ce que pourrait être un auto-enrôlement (cf. ). + + Il s'agit d'un processus en trois étapes: + + + Le client doit découvrir l'adresse du point d'enrôlement, que ce soit par une adresse connue de tous ou bien par diffusion de message de découverte de service (par exemple, le protocole SLP). + + + Il doit ensuite, de manière authentifiée, obtenir les certificats de confiance (certificats d'AC) qu'il intègrera à son magasin. + + + Pour finir, il effectue une demande de certificat authentifiée, via le point d'enrôlement et obtient son certificat qu'il peut intégrer à son magasin de certificat. + + + + +
+ + Processus d'enrôlement automatique + + +
+
+ + + L'environnement Microsoft + + + Cette esquisse a été reprise par Microsoft qui, moyennant quelques ajustements (notamment via l'utilisation du protocole CMC), l'a transposée à son environnement technique. Plus de détails sur ce protocole sont disponibles en . + + +
+ + + Cahier des charges + + + L'objectif du projet, dans son ensemble, est d'aboutir à un support complet de l'auto-enrôlement des clients Windows dans le logiciel OpenTrust-PKI via un connecteur CMC. + Au vu de l'étendue temporelle de mon stage (huit semaines passées sur ce projet), seul un sous-ensemble des fonctions sera considéré. + + +
+ diff --git a/Documents/RapportDeStage/doc-rapport/include/travail_perso.xml b/Documents/RapportDeStage/doc-rapport/include/travail_perso.xml new file mode 100755 index 0000000..8d6717c --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/include/travail_perso.xml @@ -0,0 +1,282 @@ + + Travail Personnel + + + Cette partie présente le travail que j'ai effectué lors de mon stage. Je présente tout d'abord une vue d'ensemble de mon stage, j'aborde ensuite les aspects relationnels et organisationnels et je termine par les aspects techniques du projet. + + + + Aperçu + + + Le projet d'aménagement d'un connecteur CMC a débuté lors de mon arrivée chez IDEALX et a été mené sur une période de deux mois (8 semaines). David, également stagiaire, a rejoint le projet deux semaines après mon arrivée. + + +
+ Diagramme de Gantt + + +
+ + + La présente l'organisation temporelle de mon stage. Les tâches bleue sont celles que j'ai réalisées, les vertes sont celles que David, mon collègue, a réalisées et la violette est une tâche commune. La tâche grise correspond aux cinq semaines passées sur l'intégration de la PKI 3.4. La barre noire au centre de chaque tâche représente son état d'avancement. + + + + Intégration de la PKI 3.4 + + Le projet CMC avançant à vive allure, il nous a été proposé (à David et moi-même) de participer à l'intégration d'OpenTrust-PKI 3.4. Durant ces cinq semaines, nous avons intégré l'équipe de test pour procéder aux tests fonctionnels du produit. Cette opportunité m'a permis de mieux connaitre le produit, et plus particulièrement tout le coté organisationnel des infrastructures de gestion de clés. + + + Tout au long de la période d'intégration, j'ai rapporté les dysfonctionnements que je constatais en essayant, lorsque mes connaissances me le permettaient, de proposer des possibilités de correction. J'ai également formulé des propositions d'amélioration lorsque je jugeais que l'implémentation d'une fonctionnalité n'était pas optimale. La liste de mes contributions est disponible en . + + + + Je me suis aussi proposé de créer les fiches de test d'une nouvelle fonctionnalité de la version 3.4 : la gestion des langues associées aux certificats. Ce fût pour moi l'occasion de m'entretenir avec les architectes du produit et d'émettre ainsi des propositions d'amélioration. + + + + + Projet CMC + + Ce projet a débuté par l'étude de la RFC 2797 qui a ensuite débouché sur la rédaction d'une synthèse de ce standard. Ce fût une phase importante du projet, car cela m'a permis de mieux cerner l'étendue des fonctionnalités, possibilités et limitations du protocole. Afin qu'elle profite au plus grand nombre, la synthèse a été ajoutée à la documentation interne du produit. + + + + La seconde étape fût l'étude de l'existant. Avec l'aide de Christophe De Minguine, nous avons évalué l'opportunité du projet AEP. Cette évaluation fût favorable et les choses se sont accélérées : j'ai réalisé une preuve du concept afin de pouvoir apprécier promptement la faisabilité de cette solution. J'ai alors pu rapidement planifier l'organisation du projet. + + + + J'ai ensuite commencé à adapter AEP pour OpenTrust-PKI et plutôt que de développer un connecteur CMC spécifique, j'ai réutilisé le connecteur SOAP existant. De plus amples détails sur cette contorsion technique sont disponibles en . Ce recyclage a stimulé la réalisation d'un prototype qui a tout de suite intéressé le client à qui nous l'avons présenté. Parallèlement, David travaillait sur l'étude et le développement d'un connecteur SOAP spécifique, qui sera utilisé par la suite. + + + + En prévision des développements futurs, j'ai passé trois jours en autoformation sur le thème de la sécurité sous Windows avec .NETVoir .. Cette autoformation a affiné mes connaissances des technologies Microsoft impliquées dans la sécurité. Ceci m'a également fait découvrir de nouveaux horizons concernant les possibilités d'évolution d'AEP. + + + + Parallèlement à la rédaction de ce rapport, je travaille sur l'adaptation d'AEP pour la première version du connecteur CMC. + + + +
+ + + Aspects relationnels + + + Travail en équipe + + + Lors de l'intégration, j'ai rallié une équipe nouvelle et durant la première semaine, j'ai bénéficié des conseils et explications d'une personne expérimentée. Grâce à cette phase de formation, j'ai pu prendre en main le produit avec diligence et être rapidement opérationnel. + + + + L'intégration à une équipe est également un moyen d'avancer rapidement sur un projet surtout lors de l'emploi de technologies nouvelles. Il est important, en effet, d'utiliser les compétences locales pour débloquer rapidement les situations difficiles et obtenir un avis extérieur sur les orientations que l'on envisage. + + + + Tout au long de mon stage, j'ai abondamment communiqué sur l'avancement du projet, utilisant les moyens à ma disposition : wiki, listes de diffusion, courriels et réunions d'avancement. De cette manière, j'ai eu un retour rapide quant à l'orientation à donner au projet et c'est ainsi qu'une démonstration a pu être proposée à un important client d'IDEALX. + + + + + + Collaboration avec le monde Open Source + + + Travaillant sur un projet Open Source, j'ai eu à correspondre avec le mainteneur du projet AEP pour obtenir l'aide nécessaire à mon autonomie : état d'avancement, configuration nécessaire, orientation à prendre, etc. + Il est envisagé de maintenir une base de code commune, mutualisant ainsi les corrections de bug et les évolutions futures. + + + + + + + Organisation + + + Peu de temps après la preuve du concept, je me suis appliqué à définir, en concertation avec David, une liste précise de tâches et à les échelonner dans le temps en fonction de leurs liens de précédence. Cette approche nous a permis, d'une part, d'évaluer plus précisément le temps nécessaire pour mener à bien le projet. D'autre part, nous avons pu mesurer au fur et à mesure l'avancée du projet, et ainsi éviter l'effet tunnel. + + + + Documentation + + + Le projet AEP ne disposant pas de documentation technique (pour les développeurs), j'ai réalisé, à partir des sources du programme, un diagramme statique UMLUne copie de ce diagramme est disponible en . que j'ai ensuite envoyé à Steve Parkinson, le mainteneur du projet chez Red Hat. + + + + Afin de mieux faire comprendre l'intéret du projet, son organisation et les étapes à venir, j'ai utilisé l'outil interne de documentation Trac. C'est une application web de gestion des sources (SCM) et de gestion de projet intégré. Il est très adapté pour les petits projets (quelques dizaines de personnes) et est utilisé par beaucoup de projets Open Source. Il permet de travailler de manière désynchronisée dans le temps et dans l'espace avec les personnes impliquées dans le projet. + + + + + + Aspects techniques + + + AEP, AutoEnrollment Proxy, est un serveur mandataire authentifiant. Il s'insère à la place d'une PKILa dénommination officielle de la PKI Microsoft est "Services de certificat". Microsoft et transmet les demandes de certificat à une PKI tierce : initialement, la PKI Red Hat. + + + + Services de certificat Microsoft + + + Les services de certificat, disponibles depuis Windows 2000, sont en fait une autorité de certification intégrée à l'environnement Microsoft. + Cette particularité est aussi un inconvénient: sa portée ne peut dépasser les limites de la forêtUne forêt est un ensemble d'arbres de domaines qui se font confiance les uns les autres : c'est la frontière de l'authentification Windows. Tout utilisateur ou machine en dehors de la forêt ne peut être authentifié. Voir . dans laquelle elle est installée. + C'est cette limitation qui incite certains clients à migrer vers une PKI plus souple, par exemple OpenTrust-PKI. + + + + Le fonctionnement de la PKI Microsoft est illustré par la . Il est important de noter ici l'utilisation du protocole DCOMPour de plus amples informations, voir http://en.wikipedia.org/wiki/Distributed_Component_Object_Model comme protocole de transport. + + + + + + DCOM + + + Distributed Component Object Model est une technologie de composants distribués développée par Microsoft. C'est une extension de COM, aussi appelée par certains COM with a longer wire. Cette appellation a le mérite de montrer le principal avantage de la technologie DCOM : la compatibilité binaire avec les composants déjà écrits. Mais cette compatibilité est aussi une faiblesse : elle limite les possibilités de DCOM et est source d'ennuis pour le programmeur et l'administrateur système. + + +
+ Interfaces des services de certificat + + +
+ + + Les services de certificat Microsoft utilisent DCOM comme protocole de transport entre le client et le point d'enrôlement. La Source: http://www.microsoft.com/ présente toutes les interfaces de ces services. La barre verticale symbolise la limite entre le client et le serveur. + + + + Parmi les interfaces des services de certificat, seules trois sont publiées et documentées : ICertRequest, ICertAdmin et ICertView. Ces interfaces sont présentes sur les clients Windows depuis Windows 2000. Malheureusement, les interfaces "serveur" ne sont ni publiées, ni documentées. Elle font de plus l'objet d'une licence aux États-Unis. + + + + Le projet AEP n'aurait jamais vu le jour si Microsoft n'avait pas publié par erreur les informations nécessaires à la reconstitution de l'interface ICertRequestD. + +
+ + + AEP + + + AEP, AutoEnrollment Proxy, est un serveur mandataire authentifiant. Il accepte les demandes authentifiées de certificat par l'interface DCOM ICertRequestD, les transmet à une PKI tierce et retourne le certificat généré au client. (voir ). + + +
+ Processus d'enrôlement avec AEP + + +
+ + + Ce niveau d'indirection supplémentaire permet de découpler la PKI du domaine de sécurité des clients Windows (l'ensemble des domaines qui composent la forêt), comme illustré par la . + + +
+ Intégration d'AEP dans l'infrastructure Microsoft + + +
+ + + Modifications apportées à AEP + + + Les premières actions que j'ai dû entreprendre concernaient la mise en place d'AEP : étudier son fonctionnement, installer un environnement de développement et intégrer AEP au système d'exploitation (enregistrement des classes, création des services, etc.). + + + + Je me suis ensuite consacré à la création d'un module de communication avec la PKI. Comme il existait un connecteur SOAP sur celle-ci et qu'il était fonctionnellement adapté, je l'ai réutilisé. Afin de développer ce module, j'ai utilisé le SOAP Toolkit de Microsoft et ai finalement réussi à communiquer avec la PKI à partir d'AEP. + + + + L'étape suivante fût la réalisation d'un module d'auto-remplissage : à partir des informations d'authentification du client et en utilisant l'Active Directory, obtenir le nom commun, le FQDN et le GUIDLe GUID est un identifiant utilisé par les technologies Microsoft. de la machine. + + + + + Modifications prévues d'AEP + + + Afin d'améliorer la portabilité, la fiabilité, la sécurité et la maintenabilité du logiciel, j'ai proposé la migration d'AEP en .NET. + Ceci permettrait d'utiliser les classes de ce framework, plus simples et plus fiables que leurs équivalents natifs. + + + + Il est également prévu, à terme, de maintenir une base de code commune avec le projet Fedora. + + +
+ + + Problèmes rencontrés + + + L'interface d'enrôlement des services de certificat n'étant ni publiée par Microsoft, ni documentée, son utilisation fût difficile. + En effet, le format et la sémantique des paramètres (dix au total) n'étant pas connus et l'unique message + d'erreur du client d'enrôlement windows n'étant pas explicite (voir ), la mise au point n'en fût que plus difficile. + +
+ Message d'erreur du client d'enrôlement + + +
+ + La raison de cette incapacité à installer le certificat généré est que le sixième paramètre de la méthode Request de l'interface ICertRequestD (cf. ) doit contenir la chaîne de certification complète comprenant le certificat généré et ce bien qu'il soit aussi retourné dans le septième paramètre. +
+ + + Une autre difficulté que j'ai rencontrée est le message d'erreur de la . + +
+ Message d'erreur du client d'enrôlement + + +
+ + Cette erreur est liée à un durcissement de la politique de sécurité de Windows 2003 Server, qui a lieu lors de l'installation du Service Pack 1Ce comportement est décrit dans http://support.microsoft.com/kb/903220 mais n'est conforme que lorsque les services de certificat sont installés sur la machine.. La raison de ce problème est que la sécurité des interfaces DCOM est désormais "ACL based" et "role based" : il ne suffit pas de modifier la liste de contrôle d'accès à l'interface DCOM concernée, il faut également modifier la liste des membres du groupe "DCOM Users". +
+ + + De nombreuses autres erreurs liées à la confidentialité des interfaces d'enrôlement ont ralenti mon avancée. À chaque fois, ma démarche a été identique : + + + vérifier que le problème n'est pas déjà connu en consultant la base de connaissances Microsoft, + + + consulter les forums, archives de listes de diffusion et autres sources non fiables, + + + analyser finement le journal des événements, + + + analyser les trames qui circulent sur le réseau, + + + lister les appels système à la recherche d'échecs, + + + procéder par hypothèse / expérience. + + + + + + La dernière source de problèmes fût le manque de documentation sur DCOM. C'est une technologie dépréciée en faveur de .NET, les documentations en ligne sont souvent incomplètes et imprécises, tous les livres traitant de ce sujet ne sont pas réédités et ne sont plus disponibles. + J'ai finalement réussi à me procurer la référence sur le sujet : Professionnal DCOM Programming de Richard GRIMES, ce qui m'a permis de mieux comprendre les tenants et aboutissants de cette technologie. + +
+
+
+ diff --git a/Documents/RapportDeStage/doc-rapport/main.xml b/Documents/RapportDeStage/doc-rapport/main.xml new file mode 100755 index 0000000..c4360ec --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/main.xml @@ -0,0 +1,70 @@ + + + + + + + + + + +]> + + + + Étude et développement d'un connecteur CMC pour OpenTrust-PKI + Rapport de stage de fin d’études + + NicolasMASSÉ + + IDEALX + + nicolas.masse@idealx.com + + + 2007 + Nicolas MASSÉ + + + + Dans le cadre de mes études à l'ENSICAEN, je fût en stage au sein d'IDEALX trois mois durant. Lors de cette période, j'ai participé à la vie de l'entreprise en joignant une équipe d'intégrateurs pendant cinq semaines, mais j'ai également, pendant huit semaines, réalisé mon projet de fin d'étude : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft. Ce projet a pour objectif de simplifier la phase de déploiement des certificats dans un environnement Microsoft, permettant ainsi de diminuer le TCO d'OpenTrust-PKI. Ce présent rapport présente le travail que j'ai réalisé pendant ce stage, le contexte technique nécessaire à sa compréhension et les résultats obtenus. + + + + + + + &preface; + + + &pres_ent; + + + &pres_stage; + + + &existant; + + + &travail_perso; + + + &conclusion; + + + &appendices; + + + Contributions à l'intégration de la PKI 3.4 + + + &app_int; + + + + + &biblio; + + + diff --git a/Documents/RapportDeStage/doc-rapport/xsl/fo.xsl b/Documents/RapportDeStage/doc-rapport/xsl/fo.xsl new file mode 100755 index 0000000..54b7303 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/xsl/fo.xsl @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + 6 bd maréchal Juin + 14050 CAEN Cedex 4 + Spécialité Informatique + Option Monétique + 3ème Année + + + + + + + + + + + + + + + IDEALX + 15-17 avenue de Ségur + 75007 PARIS + http://www.idealx.com/ + + + + + + + + + + + + + + + + + + + + Suivi Ensicaen: + OTMANI Ayoub + Suivi entreprise: + BROSSARD Mathias + + + + + Mars - Septembre 2007 + + + + + + + + + + + + + + + + titlepage-even + titlepage-odd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/RapportDeStage/doc-rapport/xsl/html-chunked.xsl b/Documents/RapportDeStage/doc-rapport/xsl/html-chunked.xsl new file mode 100755 index 0000000..4eefab5 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/xsl/html-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStage/doc-rapport/xsl/xhtml-chunked.xsl b/Documents/RapportDeStage/doc-rapport/xsl/xhtml-chunked.xsl new file mode 100755 index 0000000..564c1c6 --- /dev/null +++ b/Documents/RapportDeStage/doc-rapport/xsl/xhtml-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStage/globals/Makefile b/Documents/RapportDeStage/globals/Makefile new file mode 100755 index 0000000..34e0f07 --- /dev/null +++ b/Documents/RapportDeStage/globals/Makefile @@ -0,0 +1,122 @@ +# Environment variables +export PATH := $(HOME)/bin/fop:$(PATH) +export CLASSPATH := xsl/xsl-stylesheets/extensions/xalan25.jar + +# Do you need a proxy ? +export FOP_OPTS := -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 + +# Or any setting +export FOP_OPTS := $(FOP_OPTS) -Xmx1G -Djava.awt.headless=true + +# Target filenames +PDF_FILE := book.pdf +RTF_FILE := book.rtf +TXT_FILE := book.txt +PS_FILE := book.ps +XHTML_DIR := book-xhtml +XHTML1_DIR := onepage-xhtml +HTML_DIR := book-html +HTML1_DIR := onepage-html +XHTML_ARCH := book-xhtml.tar.bz2 +HTML_ARCH := book-html.tar.bz2 +XHTML1_ARCH := onepage-xhtml.tar.bz2 +HTML1_ARCH := onepage-html.tar.bz2 +VALIDITY_FILE := validity + +# Source filenames +XSL_FO_FILE := xsl/fo.xsl +XSL_XHTML_FILE := xsl/xhtml-chunked.xsl +XSL_HTML_FILE := xsl/html-chunked.xsl +XSL_XHTML1_FILE := xsl/xhtml-onepage.xsl +XSL_HTML1_FILE := xsl/html-onepage.xsl +DB_FILE := main.xml + +# Titlepage customization +TP_SPEC_FILE := xsl/titlepage.spec.xml +TP_XSL_FILE := xsl/titlepage.xsl +TP_TEMPLATE_FILE := ../globals/xsl-stylesheets/template/titlepage.xsl + +# Do you have a custom titlepage ? +TP_XSL_REAL := $(shell if test -f $(TP_SPEC_FILE); then echo $(TP_XSL_FILE); fi) + +# FOP configuration +FOP := fop +FOP_CONF := fop.xconf + +# XSLT configuration +XSLTPROC := xsltproc + +# Validity check +VALIDATOR := xmllint --noout --valid + +# Extract external entities +XML_FILES := $(wildcard include/*.xml) +DEPENDENCIES := $(TP_XSL_REAL) $(VALIDITY_FILE) + +# Default target +all: $(PDF_FILE) $(RTF_FILE) $(TXT_FILE) $(PS_FILE) $(XHTML_ARCH) $(HTML_ARCH) $(XHTML1_ARCH) $(HTML1_ARCH) + +$(VALIDITY_FILE): $(DB_FILE) $(XML_FILES) + $(VALIDATOR) $< + touch $(VALIDITY_FILE) + +$(PDF_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -pdf $@ + +$(RTF_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -rtf $@ + +$(TXT_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -txt $@ + +$(PS_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -ps $@ + +$(XHTML_DIR): $(DB_FILE) $(XSL_XHTML_FILE) $(DEPENDENCIES) + if [ ! -e $(XHTML_DIR) ]; then mkdir $(XHTML_DIR); ln -s ../img $(XHTML_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(XHTML_DIR)/std-img; fi + $(XSLTPROC) $(XSL_XHTML_FILE) $< + touch $(XHTML_DIR) + +$(HTML_DIR): $(DB_FILE) $(XSL_HTML_FILE) $(DEPENDENCIES) + if [ ! -e $(HTML_DIR) ]; then mkdir $(HTML_DIR); ln -s ../img $(HTML_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(HTML_DIR)/std-img; fi + $(XSLTPROC) $(XSL_HTML_FILE) $< + touch $(HTML_DIR) + +$(XHTML1_DIR): $(DB_FILE) $(XSL_XHTML1_FILE) $(DEPENDENCIES) + if [ ! -e $(XHTML_DIR) ]; then mkdir $(XHTML1_DIR); ln -s ../img $(XHTML1_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(XHTML1_DIR)/std-img; fi + $(XSLTPROC) -output $@/index.xhtml $(XSL_XHTML1_FILE) $< + touch $(XHTML1_DIR) + +$(HTML1_DIR): $(DB_FILE) $(XSL_HTML1_FILE) $(DEPENDENCIES) + if [ ! -e $(HTML1_DIR) ]; then mkdir $(HTML1_DIR); ln -s ../img $(HTML1_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(HTML1_DIR)/std-img; fi + $(XSLTPROC) -output $@/index.html $(XSL_HTML1_FILE) $< + touch $(HTML1_DIR) + +$(HTML_ARCH): $(HTML_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(XHTML_ARCH): $(XHTML_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(HTML1_ARCH): $(HTML1_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(XHTML1_ARCH): $(XHTML1_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(TP_XSL_FILE): $(TP_SPEC_FILE) + $(XSLTPROC) -output $@ $(TP_TEMPLATE_FILE) $< + +clean: + rm -f $(PDF_FILE) $(TP_XSL_FILE) $(VALIDITY_FILE) $(HTML_ARCH) $(XHTML_ARCH) $(RTF_FILE) $(TXT_FILE) $(PS_FILE) + rm -rf $(XHTML_DIR) $(HTML_DIR) + +test: + @echo '$(XML_FILES)' + +.PHONY: all clean test + diff --git a/Documents/RapportDeStage/globals/common-fo.xsl b/Documents/RapportDeStage/globals/common-fo.xsl new file mode 100755 index 0000000..a342f97 --- /dev/null +++ b/Documents/RapportDeStage/globals/common-fo.xsl @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + ../globals/xsl-stylesheets/images/ + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + dashed + .5pt + #555555 + #EEEEEE + 5pt + + + + + sans-serif + + + + + + + + + + + + + + + img/ + + + + + + + + + 90% + + + + #EEEEEE + + + + + + + + + + + + transparent + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + + 3pt + 1pt + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pt + + + + + + + + pt + + + + + + + + + + pt + + + + + + + + pt + + + + + + + + pt + + + diff --git a/Documents/RapportDeStage/globals/common-html-chunked.xsl b/Documents/RapportDeStage/globals/common-html-chunked.xsl new file mode 100755 index 0000000..bc25612 --- /dev/null +++ b/Documents/RapportDeStage/globals/common-html-chunked.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStage/globals/common-html-onepage.xsl b/Documents/RapportDeStage/globals/common-html-onepage.xsl new file mode 100755 index 0000000..087e250 --- /dev/null +++ b/Documents/RapportDeStage/globals/common-html-onepage.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStage/globals/common-xhtml-chunked.xsl b/Documents/RapportDeStage/globals/common-xhtml-chunked.xsl new file mode 100755 index 0000000..9f60d73 --- /dev/null +++ b/Documents/RapportDeStage/globals/common-xhtml-chunked.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStage/globals/common-xhtml-onepage.xsl b/Documents/RapportDeStage/globals/common-xhtml-onepage.xsl new file mode 100755 index 0000000..d52154a --- /dev/null +++ b/Documents/RapportDeStage/globals/common-xhtml-onepage.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStage/globals/fonts/addfont.sh b/Documents/RapportDeStage/globals/fonts/addfont.sh new file mode 100755 index 0000000..377d335 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/addfont.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +FOP_PREFIX="$HOME/bin/fop" +CLASSPATH="$FOP_PREFIX/build/fop.jar:$FOP_PREFIX/lib/xercesImpl.jar:$FOP_PREFIX/lib/xalan.jar" +CLASSPATH="$CLASSPATH:$FOP_PREFIX/lib/avalon-framework.jar:$FOP_PREFIX/lib/xml-apis.jar" +CLASSPATH="$CLASSPATH:$FOP_PREFIX/lib/commons-logging-1.0.4.jar:$FOP_PREFIX/lib/commons-io-1.1.jar" +CLASS="org.apache.fop.fonts.apps.TTFReader" +ENC="ansi" + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +java -cp "$CLASSPATH" "$CLASS" -enc "$ENC" "$1" "$(echo "$1" |sed 's/\.[Tt][Tt][Ff]//').xml" + diff --git a/Documents/RapportDeStage/globals/fonts/cour.ttf b/Documents/RapportDeStage/globals/fonts/cour.ttf new file mode 100755 index 0000000..9b06e57 Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/cour.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/cour.xml b/Documents/RapportDeStage/globals/fonts/cour.xml new file mode 100755 index 0000000..04eafd2 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/cour.xml @@ -0,0 +1 @@ +CourierNew571422612-188-21-67963710203500TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/courbd.ttf b/Documents/RapportDeStage/globals/fonts/courbd.ttf new file mode 100755 index 0000000..9b8d4f0 Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/courbd.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/courbd.xml b/Documents/RapportDeStage/globals/fonts/courbd.xml new file mode 100755 index 0000000..94cb60a --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/courbd.xml @@ -0,0 +1 @@ +CourierNew,Bold592443633-208-46-71070112213500TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/courbi.ttf b/Documents/RapportDeStage/globals/fonts/courbi.ttf new file mode 100755 index 0000000..106b2bf Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/courbi.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/courbi.xml b/Documents/RapportDeStage/globals/fonts/courbi.xml new file mode 100755 index 0000000..29fa108 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/courbi.xml @@ -0,0 +1 @@ +CourierNew,BoldItalic592443633-208-102-3768361003990-12TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/couri.ttf b/Documents/RapportDeStage/globals/fonts/couri.ttf new file mode 100755 index 0000000..31b90ae Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/couri.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/couri.xml b/Documents/RapportDeStage/globals/fonts/couri.xml new file mode 100755 index 0000000..6ebba16 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/couri.xml @@ -0,0 +1 @@ +CourierNew,Italic571422612-188-67-2738001000990-12TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/georgia.ttf b/Documents/RapportDeStage/globals/fonts/georgia.ttf new file mode 100755 index 0000000..c24d59b Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/georgia.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/georgia.xml b/Documents/RapportDeStage/globals/fonts/georgia.xml new file mode 100755 index 0000000..3dddf35 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/georgia.xml @@ -0,0 +1 @@ +Georgia692481756-216-173-21611669123300TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/georgiab.ttf b/Documents/RapportDeStage/globals/fonts/georgiab.ttf new file mode 100755 index 0000000..2cfce23 Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/georgiab.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/georgiab.xml b/Documents/RapportDeStage/globals/fonts/georgiab.xml new file mode 100755 index 0000000..f386c89 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/georgiab.xml @@ -0,0 +1 @@ +Georgia,Bold692484756-216-190-21612959123300TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/georgiai.ttf b/Documents/RapportDeStage/globals/fonts/georgiai.ttf new file mode 100755 index 0000000..27abc9d Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/georgiai.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/georgiai.xml b/Documents/RapportDeStage/globals/fonts/georgiai.xml new file mode 100755 index 0000000..72a9a2d --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/georgiai.xml @@ -0,0 +1 @@ +Georgia,Italic692488756-216-195-2161196912970-13TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fonts/georgiaz.ttf b/Documents/RapportDeStage/globals/fonts/georgiaz.ttf new file mode 100755 index 0000000..f60957e Binary files /dev/null and b/Documents/RapportDeStage/globals/fonts/georgiaz.ttf differ diff --git a/Documents/RapportDeStage/globals/fonts/georgiaz.xml b/Documents/RapportDeStage/globals/fonts/georgiaz.xml new file mode 100755 index 0000000..086bf56 --- /dev/null +++ b/Documents/RapportDeStage/globals/fonts/georgiaz.xml @@ -0,0 +1 @@ +Georgia,BoldItalic692495756-216-242-2161354914970-13TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStage/globals/fop.xconf b/Documents/RapportDeStage/globals/fop.xconf new file mode 100755 index 0000000..1e82e37 --- /dev/null +++ b/Documents/RapportDeStage/globals/fop.xconf @@ -0,0 +1,149 @@ + + + + + + + . + + + ../globals/fonts + + + 300 + + 300 + + + + + + + + + + + flate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/RapportDeStage/template/Makefile b/Documents/RapportDeStage/template/Makefile new file mode 120000 index 0000000..3a269a0 --- /dev/null +++ b/Documents/RapportDeStage/template/Makefile @@ -0,0 +1 @@ +../globals/Makefile \ No newline at end of file diff --git a/Documents/RapportDeStage/template/docbook b/Documents/RapportDeStage/template/docbook new file mode 120000 index 0000000..42b7ae3 --- /dev/null +++ b/Documents/RapportDeStage/template/docbook @@ -0,0 +1 @@ +../globals/docbook \ No newline at end of file diff --git a/Documents/RapportDeStage/template/fop.xconf b/Documents/RapportDeStage/template/fop.xconf new file mode 120000 index 0000000..9113e46 --- /dev/null +++ b/Documents/RapportDeStage/template/fop.xconf @@ -0,0 +1 @@ +../globals/fop.xconf \ No newline at end of file diff --git a/Documents/RapportDeStage/template/main.xml b/Documents/RapportDeStage/template/main.xml new file mode 100755 index 0000000..6ece725 --- /dev/null +++ b/Documents/RapportDeStage/template/main.xml @@ -0,0 +1,35 @@ + + + + + + Title + + JohnSMITH + + ACME corp. + IT dept. + + john@acme.com + + + 2000 + ACME corp. + + + + + Foreword + + + + + My First Document with Docbook + + What is docbook ? + A paragraph + + + + diff --git a/Documents/RapportDeStage/template/xsl/fo.xsl b/Documents/RapportDeStage/template/xsl/fo.xsl new file mode 100755 index 0000000..ab87913 --- /dev/null +++ b/Documents/RapportDeStage/template/xsl/fo.xsl @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/Documents/RapportDeStage/template/xsl/html-chunked.xsl b/Documents/RapportDeStage/template/xsl/html-chunked.xsl new file mode 100755 index 0000000..4eefab5 --- /dev/null +++ b/Documents/RapportDeStage/template/xsl/html-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStage/template/xsl/xhtml-chunked.xsl b/Documents/RapportDeStage/template/xsl/xhtml-chunked.xsl new file mode 100755 index 0000000..564c1c6 --- /dev/null +++ b/Documents/RapportDeStage/template/xsl/xhtml-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStageM2Ami/Makefile b/Documents/RapportDeStageM2Ami/Makefile new file mode 100755 index 0000000..08f941a --- /dev/null +++ b/Documents/RapportDeStageM2Ami/Makefile @@ -0,0 +1,22 @@ +SUBDIRS := $(wildcard doc-*) + +help: + @echo "Usages: make " + @echo " all : build all documentations" + @echo " new-doc : create a new documentation from a template" + @echo " clean : clean all documentations" + +all: $(SUBDIRS) + +$(SUBDIRS): + make -C $@ all + +clean: + @for i in $(SUBDIRS); do make -C "$$i" clean || exit 1; done + +new-doc: template + @echo "Enter the name of your documentation (no space, special chars, etc.): " + @echo -n "name> " ; read name ; echo "Creating doc-$$name..." ; cp -r template "doc-$$name" + +.PHONY: $(SUBDIRS) new-doc all help clean + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/Makefile b/Documents/RapportDeStageM2Ami/doc-rapport/Makefile new file mode 120000 index 0000000..3a269a0 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/Makefile @@ -0,0 +1 @@ +../globals/Makefile \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/docbook b/Documents/RapportDeStageM2Ami/doc-rapport/docbook new file mode 120000 index 0000000..42b7ae3 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/docbook @@ -0,0 +1 @@ +../globals/docbook \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/fop.xconf b/Documents/RapportDeStageM2Ami/doc-rapport/fop.xconf new file mode 120000 index 0000000..9113e46 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/fop.xconf @@ -0,0 +1 @@ +../globals/fop.xconf \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-Fonct.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-Fonct.png new file mode 120000 index 0000000..95a3181 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-Fonct.png @@ -0,0 +1 @@ +../../../Schemas/AEP-Fonct.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-IDXPKI.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-IDXPKI.png new file mode 120000 index 0000000..0fdd77a --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/AEP-IDXPKI.png @@ -0,0 +1 @@ +../../../Schemas/AEP-IDXPKI.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/CMC_routage_aggregation.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/CMC_routage_aggregation.png new file mode 120000 index 0000000..42f17d3 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/CMC_routage_aggregation.png @@ -0,0 +1 @@ +../../../Schemas/LRA_routage_aggregation.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/IDX-Enroll.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/IDX-Enroll.png new file mode 120000 index 0000000..62cddf0 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/IDX-Enroll.png @@ -0,0 +1 @@ +../../../Schemas/IDX-Enroll.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/PKI_MS-Fonct.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/PKI_MS-Fonct.png new file mode 120000 index 0000000..005f0b8 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/PKI_MS-Fonct.png @@ -0,0 +1 @@ +../../../Schemas/PKI_MS-Fonct.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/autoenroll.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/autoenroll.png new file mode 120000 index 0000000..2e49dec --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/img/autoenroll.png @@ -0,0 +1 @@ +../../../Schemas/autoenroll.png \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/err1.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/err1.png new file mode 100755 index 0000000..cae9073 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/err1.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/err2.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/err2.png new file mode 100755 index 0000000..d6fc788 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/err2.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/gantt.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/gantt.png new file mode 100755 index 0000000..a18516c Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/gantt.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/opentrust.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/opentrust.png new file mode 100755 index 0000000..4708796 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/opentrust.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/unicaen.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/unicaen.png new file mode 100755 index 0000000..d32dae2 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/logos/unicaen.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/ms1.gif b/Documents/RapportDeStageM2Ami/doc-rapport/img/ms1.gif new file mode 100755 index 0000000..2f8b214 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/ms1.gif differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/ms2.gif b/Documents/RapportDeStageM2Ami/doc-rapport/img/ms2.gif new file mode 100755 index 0000000..04d457e Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/ms2.gif differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/opentrustnew.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/opentrustnew.png new file mode 100755 index 0000000..62644f5 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/opentrustnew.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/img/statique.png b/Documents/RapportDeStageM2Ami/doc-rapport/img/statique.png new file mode 100755 index 0000000..80a4590 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/doc-rapport/img/statique.png differ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/appendices.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/appendices.xml new file mode 100755 index 0000000..35c0ce1 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/appendices.xml @@ -0,0 +1,166 @@ + + Description du protocole CMC + + CMC signifie "Certificate Management over CMS" et CMS signifie "Cryptographic Message Syntax". C'est un protocole normalisé par l'IETF sous le numéro 2797 qui permet l'enregistrement de certificats (enrollment), tout comme SCEP. Alors que SCEP est principalement utilisé par CISCO, CMC est surtout utilisé par Microsoft. + Il est basé sur les standards PKCS#7, PKCS#10 et CRMF. Une attention particulière a été apportée lors de la conception de ce protocole afin de permettre aux clients de continuer à utiliser des objets PKCS#7 et PKCS#10 lorsque c'est possible. + Le protocole CMC utilise, lorsque c'est possible, un simple aller-retour pour effectuer un enregistrement. Cette particularité implique certaines propriétés telles que l'aggrégation et le routage au niveau des autorités d'enregistrement locales. + Les autorités d'enregistrement locales (LRA, Local Registration Authority) définies dans la norme sont des entités situées entre l'AC et le client. Elles peuvent aggréger les demandes des clients, les aiguiller vers différentes AC, archiver les clés privées ou encore ajouter des extensions aux demandes. + +
+ Deux modes de fonctionnement + + +
+ + + Enfin, le protocole propose des services optionnels tels que : l'émission différée, la révocation de certificats ainsi que la récupération de certificats et de listes de révocations. + + + + Structure générale du protocole + Dans le cas le plus simple, le client envoie sa CSR (au format PKCS#10) et le serveur retourne le certificat au format PKCS#7. C'est le format simple, il n'y a alors pas de gestion des erreurs, ni de service supplémentaire. + Dans les autres cas, le protocole utilise des messages au format complet avec un module ASN.1 comme "glue" entre les formats PKCS#7, 10 et CRMF. Ces messages peuvent contenir plusieurs demandes de certificats, parfois enveloppées dans des messages CMC (en cas de passage par une LRA). + Il est important de noter que la RFC n'impose pas de protocole de transport et certains produits pourraient, par exemple, utiliser un protocole propriétaire pour transmettre les messages CMC. + + + + Attributs de contrôle + Un attribut de contrôle est une valeur qui altère la façon dont l'AC (ou une LRA) va traiter la demande de certificat. Inclu dans une réponse de l'AC, il précise l'état de traitement de la requète (OK, erreur, en cours). + Sauf exception, un attribut de contrôle s'applique au message entier, et donc à plusieurs demandes. + + + + Preuve de possession + Les spécifications prévoient l'utilisation de preuves de possession (POP) afin de s'assurer que le client dispose bien de la clé privée. La méthode la plus simple consiste à signer la requète avec la clé privée et pour les clés de chiffrement uniquement, un mécanisme alternatif de type défi-réponse est prévu. Ce mécanisme nécessitant plusieurs échanges, la preuve de possession peut être effectuée par une autorité d'enregistrement locale. + + + + Preuve d'identité + + Au travers du protocole, les clients demandeurs d'un certificat peuvent prouver leur identité au moyen d'un secret partagé avec l'AC. Ce secret partagé peut être généré par un jeton matériel. + La preuve d'identité étant transmise séparément de la preuve de possession, il est nécessaire de lier ces deux informations. La RFC propose deux méthodes : l'une est basée sur un témoin cryptographique (HMAC d'un nombre aléatoire) et l'autre requiert une correspondance entre le secret partagé et le DN de la requète. + + + + Comparaison avec SCEP + + + + + + + + SCEPCMC + Algorithmes supportésRSADSA et DH, RSA en option + Enregistrement de certificatouioui + Emission différéeouioui + Récupération d'un certificatoui + Récupération du certificat racineouifacultatif + Récupération de CRLouifacultatif + Gestion des LRAoui + Révocation de certificatoui + Protocole de transportHTTPau choix + Confidentialitéouià la carte + Preuve de possessionlimitéeSe limite à une signature de la requète, pas de gestion des clés de chiffrement seulement.complète + Gestion de l'autorité de séquestreoui + + + + + +
+ + + Diagramme statique d'AEP + + + + + + + Interface ICertRequestD + +[ + object, + uuid(d99e6e70-fc88-11d0-b498-00a0c90312f3), + dual, + helpstring("Red Hat ICertRequestD Interface"), + pointer_default(unique) +] +interface ICertRequestD: IUnknown +{ + import "oaidl.idl"; + + + HRESULT Request( + [in] DWORD dwFlags, + [unique][string][in] const wchar_t * pwszAuthority, + [ref][out][in] DWORD * pdwRequestId, + [out] DWORD * pdwDisposition, + [unique][string][in] const wchar_t * pwszAttributes, + [ref][in] const CERTTRANSBLOB *pctbRequest, + [ref][out] CERTTRANSBLOB * pctbCertChain, + [ref][out] CERTTRANSBLOB * pctbEncodedCert, + [ref][out] CERTTRANSBLOB * pctbDispositionMessage); + + HRESULT GetCACert( + [in] DWORD fchain, + [unique][string][in] const wchar_t * pwszAuthority, + [ref][out] CERTTRANSBLOB * pctbOut ); + + HRESULT Ping( + [unique][string][in] const wchar_t * pwszAuthority); + +}; + +[ + object, + uuid(5422fd3a-d4b8-4cef-a12e-e87d4ca22e90), + dual, + helpstring("Red Hat ICertRequestD2 Interface"), + pointer_default(unique) +] +interface ICertRequestD2: ICertRequestD +{ + import "oaidl.idl"; + + HRESULT Request2( + [unique][string][in] const wchar_t * pwszAuthority, + [in] DWORD dwFlags, + [unique][string][in] const wchar_t * pwszSerialNumber, + [ref][out][in] DWORD * pdwRequestId, + [out] DWORD * pdwDisposition, + [unique][string][in] const wchar_t * pwszAttributes, + [ref][in] const CERTTRANSBLOB *pctbRequest, + [ref][out] CERTTRANSBLOB * pctbFullResponse, + [ref][out] CERTTRANSBLOB * pctbEncodedCert, + [ref][out] CERTTRANSBLOB * pctbDispositionMessage + ); + + + HRESULT GetCAProperty( + [unique][string][in] const wchar_t *pwszAuthority, + [in] LONG PropId, + [in] LONG PropIndex, + [in] LONG PropType, + [ref][out] CERTTRANSBLOB *pctbPropertyValue + ); + + + HRESULT GetCAPropertyInfo( + [unique][string][in] const wchar_t *pwszAuthority, + [out] LONG *pcProperty, + [ref][out] CERTTRANSBLOB *pctbPropInfo + ); + + + HRESULT Ping2( + [unique][string][in] const wchar_t * pwszAuthority); + + +}; + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/biblio.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/biblio.xml new file mode 100755 index 0000000..8b85f1c --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/biblio.xml @@ -0,0 +1,47 @@ + + Bibliographie + + GRIMES, Richard, + <emphasis>Professionnal DCOM Programming</emphasis>. + WROX Press, 1997. + 565 pages. + 1-861000-60-X + + + + MYERS, et al. + <emphasis>RFC 2797 : Certificate Management Messages over CMS</emphasis>. + IETF, 2000. + 47 pages. + + + + LOWE-NORRIS, Alistair G., + <emphasis>Windows 2000 Active Directory</emphasis>. + O'Reilly, 2000. + 621 pages. + 1-56592-638-2 + + + + KEITH, Brown, + <emphasis>The .NET Developer's Guide to Windows Security</emphasis>. + Addison Wesley, 2004. + 379 pages. + 0-321-22835-9 + + + + GUTMANN, Peter, + <emphasis>Plug-and-Play PKI: A PKI your Mother can Use</emphasis>. + 2003. + + + + <emphasis>Guidelines for enabling smart card logon with third-party certification authorities</emphasis>. + Microsoft. [en ligne]. + 2007 [page consultée le 15/06/2007]. + Disponible sur http://support.microsoft.com/kb/281245 + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/conclusion.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/conclusion.xml new file mode 100755 index 0000000..59fe68b --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/conclusion.xml @@ -0,0 +1,22 @@ + + Bilan + + + Ce stage chez OpenTrust m'a permis d'acquérir de nombreuses connaissances : technologies de sécurité Microsoft, + programmation DCOM, plateforme .NET et surtout l'aspect organisationnel des infrastructures de gestion de clé. + Au delà de ces connaissances, j'ai aussi développé certaines de mes compétences : principalement l'organisation + et la communication. + + + + Durant de ce projet, j'ai procédé à une étude du sujet, défini le cadre technique du projet, mis en place un + environnement de test, développé et documenté le projet. Ces actions ont abouti à un logiciel qui fait maintenant + partie de l'offre OpenTrust et qui sera déployé chez d'importants clients d'OpenTrust. + + + + Je suis maintenant embauché chez OpenTrust dans l'équipe R&D et lorsque ce sera nécessaire j'aiderai l'équipe + avant-vente sur les démonstrations et "Proof of Concept". + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/existant.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/existant.xml new file mode 100755 index 0000000..4b4a199 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/existant.xml @@ -0,0 +1,148 @@ + + Étude de l'existant + + + Cette partie présente deux solutions existantesIl existe également une troisième solution : SCEP. Voir http://www.ietf.org/internet-drafts/draft-nourse-scep-15.txt. permettant l'auto-enrôlement : IDX-Enroll, un logiciel développé par OpenTrust, et CMC, un protocole géré nativement par les clients Microsoft. + + + + IDX-Enroll + + + Afin de combler le besoin d'enrôlement automatique de ses clients, OpenTrust a fait développer le logiciel IDX-Enroll dont le fonctionnement est le suivant : + + + + la solution se présente sous la forme d'un package MSI que l'on déploie sur les contrôleurs du domaine par une politique de groupe (aussi appelée GPO). + + + + + le package MSI contient une clé privé et un certificat d'authentification qu'IDX-Enroll utilise pour s'authentifier auprès du connecteur SOAP de la PKI. + + + + + Toutes les opérations cryptographiques sont effectuées via le connecteur SOAP sans validation (ni d'un opérateur, ni d'un annuaire d'entreprise). + + + + + +
+ + Fonctionnement de l'auto-enrôlement avec IDX-Enroll + + +
+ + + Cette solution présente de multiples inconvénients: + + + + + Elle est intrusive : un logiciel doit être déployé sur tous les contrôleurs de domaine, ce qui implique de tester le logiciel sur les différentes configurations du client. + + + + + Les informations d'authentification (clé privée et certificat) sont déployées avec le logiciel et par conséquent, sont les mêmes pour tous les contrôleurs de domaine. + + + + + La validation des informations du certificat est effectuée par IDX-Enroll lui-même. + + + + + + + Au vu de ces inconvénients, le développement d'une autre solution s'avère nécessaire. + +
+ + + Le protocole CMC + + + CMC est le protocole cryptographique utilisé par les clients Microsoft pour obtenir un certificat lors d'un enrôlement (manuel ou automatique). + Ce protocole standardisé par l'IETF sous le numéro 2797 précise la syntaxe des messages cryptographiques utilisés lors d'un enrôlement. + Une description détaillée du protocole est disponible en . + + +
+ Fonctionnement de l'auto-enrôlement via CMC + + +
+ + + À partir de Windows 2003 Server et Windows XP, Microsoft fournit en standard un client d'enrôlement CMC prévu pour s'interfacer avec sa PKI (et uniquement celle-ci). Ce client tire pleinement partie de l'infrastructure de sécurité Microsoft. En effet, il s'interface avec Active Directory pour obtenir sa configuration et utilise les mécanismes d'authentification standards Windows (Kerberos). De cette manière, le processus d'enrôlement est entièrement automatique et authentifié. De plus, les informations du certificat sont générées par l'AC à partir d'un référentiel de confiance : l'Active Directory. + + + + AEP + + + AutoEnrollment Proxy (AEP) est un logiciel Open Source initialement réalisé par Red Hat, et maintenu à présent par le projet Fedora Directory Server. + Après enregistrement dans l'Active Directory, il est vu par les client Windows comme une PKI Microsoft, et ainsi permet d'utiliser le client d'enrôlement + natif sans la PKI Microsoft. + + + + N'utilisant pas l'autorité de certification Microsoft, AEP n'est pas pour autant une AC ! Il a été conçu pour transmettre les demandes de certificat à une PKI tierce : Red Hat Certificate System, qui est la développée par Red Hat (originellement conçue par Netscape). + + +
+ + + Comparaison des coûts + + + Coûts liés à IDX-Enroll + + + De par sa nature, IDX-Enroll implique certains coût pour le client : + + + le coût de validation du logiciel : il est dû au fait que le client doit tester le logiciel sur ses plateformes de test avant de le déployer en production. Ce coût est estimé à 40-50 jours-homme. + + + le coût de la revue de supportabilité. + La revue de supportabilité s'applique à un projet informatique, qu'il s'agisse d'une première installation, d'une mise à jour ou d'une migration liée aux technologies Microsoft. L'objet de ce service est de procéder à un examen de l'environnement du client et d'émettre une série de recommandations. En exploitant ces recommandations, le client évite d'éventuels problèmes et s'assure ainsi du bon déroulement des différentes phases de son projet.) + + + + le coût de déploiement : il est dû au fait qu'un déploiement n'est en général pas effectué en une seule fois mais progressivement en s'assurant du bon déroulement du processus. + + + le coût de maintenance : à chaque nouvelle version de IDX-Enroll, le client doit re-tester la solution et la déployer. + + + + + + + Coûts liés à AEP + + + En comparaison, les coûts liés à l'utilisation d'AEP sont bien moindres. Aucune installation, aucun paramètrage sur les contrôleurs de domaine n'étant nécessaire, il n'implique que des coûts de déploiement : enrôler ces machines petit à petit en s'assurant du bon déroulement de la procédure. + + + + + Comparaison + + + Il s'avère que cette dernière solution est bien plus avantageuse que IDX-Enroll. L'équipe commerciale/avant vente estime d'ailleurs qu'elle pourrait diviser les coûts d'enrôlement des contrôleurs de domaine par dix. + + + + + +
+ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/gen.awk b/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/gen.awk new file mode 100755 index 0000000..c2ed738 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/gen.awk @@ -0,0 +1,21 @@ +#!/usr/bin/awk -f + +BEGIN { + print ""; + print ""; + print ""; + print ""; + print ""; + FS=","; + print "#Description"; +} + +{ + print "" $1 "" $2 ""; +} + +END { + print ""; + print ""; + print ""; +} diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/query.csv b/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/query.csv new file mode 100755 index 0000000..dc2c350 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/integration/query.csv @@ -0,0 +1,74 @@ +1519,La génération des entités locales a planté (impossible d'afficher la page),nmasse,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1520,Sous IE : Les barres bleues cliquables n'ont pas le bon pointeur de souris,somebody,defect,new,lowest,IDX-PKI Roadmap +1522,Erreurs dans les logs apache: des fichiers Javascript n'ont pas été trouvés,ndelon,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1527,Après importation (CERT_EXTERNES_AJOUT)_ impossible de retrouver les certificats importés,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1528,La commande idxpki-camgr ne vérifie pas la validité de ses paramètres (CERT_EXTERNES_AJOUT),rrenard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1535,Aucun mail envoyé après un recouvrement sur l'AE,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1538,"Insecure dependency" lors d'un cron (/opt/idxpki/sbin/remove-p12.pl),fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1547,Révocation par lot: l'élément "Liste des demandes de révocation" reste sélectionné,mbrossard,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1548,"Télécharger le PKCS#7 avec la chaine de certification" ne contient que le certificat final,rrenard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1552,L'interface de config de l'autofill manque de cohérence avec les autres interfaces,somebody,enhancement,new,low,IDX-PKI Roadmap +1554,La liste des profils de certificat dans la gestion des certificats n'est très lisible,somebody,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1559,Faute de frappe : un "de" en trop lors d'une demande de certificat centralisée,somebody,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1560,Les mails envoyés à l'administrateur lors d'une requète SCEP ne sont pas complets,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1561,Revocation SCEP : "Code de révocation présent dans la demande de révocation mais non requis",fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1568,[PUBLICATION_CERT_SIMPLE_REPO_UNAV_2] Une seule tentative de publication effectuée,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1569,[PUBLICATION_CERT_MULTI_PROFILE] Seul le premier profil de publication est pris en compte,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1570,Petit bug d'affichage dans la gestion des AC,mbrossard,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1571,[PUBLICATION_CRL] Rien n'est publié_ mais les logs indiquent que tout s'est bien passé,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1573,Il serait bien de pouvoir configurer le délai d'attente après un publication ratée,somebody,enhancement,new,normal,IDX-PKI Roadmap +1575,Problème lors du recouvrement avec l'admin.p12,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1579,Amélioration de la CSS avec IE7,somebody,enhancement,new,lowest,IDX-PKI Roadmap +1582,Warnings dans les logs d'apache,mbrossard,defect,closed,low,IDX-PKI 3.4 (Paperotta) +1583,Il n'est pas possible d'émettre un certificat avec un DN vide,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1587,Confiance aux AC: Message d'erreur pas explicite,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1588,Confiance aux AC: Impossible d'uploader un certificat,mbrossard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1589,Erreur interne lors du rejet d'une demande de certificat,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1593,Impossible de supprimer une AC en cours de création,somebody,enhancement,new,normal,IDX-PKI Roadmap +1598,Multiples erreurs avec IE7 lors de l'ajout d'une AC,ndelon,defect,new,normal,IDX-PKI 3.4 : Maintenance +1603,Révocation des certificats d'AC avec IE(7): Comportement limite,somebody,enhancement,new,normal,IDX-PKI Roadmap +1606,Yellow message incorrect dans la gestion des profils,blepilliez,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1607,[CERT_CENT_P12_USER_PWD_ADMIN] No encryption certificate is associated to your DN_ the mail will be sent unencrypted.,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1608,[CERT_CENT_AE_OK] Mail chiffré alors qu'il ne devrait pas l'être,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1609,[PKI_CERT_SERV_P10] Messages d'erreur incohérents,fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1615,(édition d'un profil avec IE) Incohérence de l'interface profil pré-validé centralisé,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1617,Mail de révocation: il y a un [COMMENT] dans le corps du mail,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1625,Autofill_ champs obligatoires_ erreur interne,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1626,Il n'est pas possible de supprimer des RDNs et des attributs d'un profil d'autofill,somebody,enhancement,closed,low,IDX-PKI 3.4 (Paperotta) +1627,La recherche avec "*" ne fonctionne pas dans l'interface d'édition des droits sur les profils et les zones,fgarzon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1629,Il est possible d'associer un profil de mail "Rejet d'une demande de certificat" à un profil de certificat avec validation externe,ndelon,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1632,Amélioration du #1155: Droit d'un certificat révoqué,somebody,enhancement,new,low,IDX-PKI Roadmap +1633,Langue incorrecte pour l'envoi des mails,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1634,En modifiant l'URL de récupération d'un certificat_ il est possible de modifier le numéro de tracking de cette action dans les logs,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1635,Validation d'une demande de révocation: manque de cohérence,mbrossard,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1637,Edition d'un profil de certificat: légère amélioration de l'interface anglaise,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1655,Traduction manquante pour AppLogs/detailkey:hash_function,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1657,[CERT_RECH_PAR_SERIAL] Accepter les numéros de série préfixé par un 0,mbrossard,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1658,[CERT_RECH_PAR_DN] Supprimer les espaces après les virgules,mbrossard,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1663,Faute de frappe dans l'interface SCEP anglaise,blepilliez,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1671,Cases à cocher "liées" sous IE7 : Comportement erratique,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1676,Révocation par lot : Erreur interne,mbrossard,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1681,[CERT_SCEP_CONF_ROUTEUR] Erreur lors du "crypto pki authenticate ...",somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1683,Confiance aux AC : Segfault de httpd,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1699,Renouvellement: amélioration des traductions anglaises,gsedratidinet,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1700,Renouvellement Hors Service,gsedratidinet,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1708,La langue associée à l'admin.p12 est toujours l'anglais,ndelon,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1709,La confirmation d'une demande de certificat est en anglais dans l'interface française,somebody,defect,closed,lowest,IDX-PKI 3.4 (Paperotta) +1713,Méta-données: la langue devrait être attachée au DN et non au certificat,somebody,enhancement,new,normal,IDX-PKI Roadmap +1714,Gestion des langues: c'est pas vraiment intuitif...,somebody,enhancement,new,normal,IDX-PKI Roadmap +1726,Imprécision dans l'interface scep anglaise,blepilliez,enhancement,closed,lowest,IDX-PKI 3.4 (Paperotta) +1727,Politique de mot de passe_ profil centralisé avec mot de passe aléatoire_ erreur sur l'AC,gsedratidinet,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1730,Création d'un profil d'autofill: préciser le terme "identifiant utilisateur",somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1735,[PKI_CERT_SERV_LOG] Erreur interne,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1738,Recouvrement de son propre certificat de chiffrement: le mail est envoyé chiffré,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1739,Profil avec prévalidation: la langue associée aux certificats est toujours l'anglais,ndelon,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1742,Validation d'une demande de certificat: incohérence anglais/français,somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1744,Gestion des adresses emails dans l'interface de révocation par lot,somebody,enhancement,closed,normal,IDX-PKI 3.4 (Paperotta) +1745,Révocation de l'admin.p12: aucune demande de certificat n'est possible après !,somebody,defect,closed,normal,IDX-PKI 3.4 (Paperotta) +1756,SCEP: Code de révocation demandé sur l'EE alors qu'il n'y a pas besoin,somebody,enhancement,new,low,IDX-PKI Roadmap +1759,Enrollment automatique SCEP: le passage en mode manuel devrait être loggué,somebody,enhancement,new,normal,IDX-PKI Roadmap +1767,Support d'IE sous Vista,somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1771,Profil avec prévalidation: l'opérateur devrait pouvoir choisir la langue de l'utilisateur,somebody,enhancement,new,normal,IDX-PKI Roadmap +1772,Les mails de notification de révocation avec un profil "serveur" sont envoyés de "root@localhost",somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1773,Catégories: Yellow message incorrect,somebody,defect,new,normal,IDX-PKI 3.4 : Maintenance +1774,Gestion des groupes: L'interface "Droits d'administration" nécessite deux enregistrements pour être fonctionnelle,somebody,enhancement,new,normal,IDX-PKI 3.4 : Maintenance diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/preface.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/preface.xml new file mode 100755 index 0000000..6679e61 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/preface.xml @@ -0,0 +1,36 @@ + + Introduction + + + Dans le cadre de mes études à l'université de CAEN, j'ai été en stage au sein d'OpenTrust six mois durant. + Lors de cette période, j'ai participé à la vie de l'entreprise en joignant une équipe d'intégrateurs pendant cinq semaines, mais j'ai également réalisé mon projet de fin d'étude : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft. + + + + Ce projet a pour objectif de simplifier la phase de déploiement des certificats dans un environnement Microsoft, permettant ainsi de diminuer le TCOTotal Cost of Ownership ou Coût total de possession. C'est un coût qui intégre tous les éléments constitutifs d'un produit manufacturé (inventé par le Gartner Group en 1987). d'OpenTrust-PKI. + + + + Ce présent rapport expose le travail que j'ai réalisé pendant ce stage, le contexte technique nécessaire à sa compréhension et les résultats obtenus. + + + + Remerciements + + + Tout au long de mon stage j'ai bénéficié de l'aide de nombreuses personnes et je leur en suis très reconnaissant. + Je remercie tout particulièrement : + + Mathias BROSSARD, mon maître de stage, pour ses conseils avisés, + Ayoub OTMANI, mon tuteur à l'université de CAEN, + David PEPIN, mon binôme, pour son aide tout au long du stage, + Fredéric GARZON et Nicolas DELON, pour leurs innombrables explications, + Sherley BROTHIER, directeur technique, pour son soutien, + Steve PARKINSON, en charge du projet AEP chez Red Hat, pour son aide inestimable, + tout le personnel d'OpenTrust, pour leur soutien constant. + + + + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_ent.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_ent.xml new file mode 100755 index 0000000..56a774e --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_ent.xml @@ -0,0 +1,106 @@ + + Présentation de l'entreprise + + + IDEALXEn juillet 2007, IDEALX à changé de raison sociale + et est devenue OpenTrust. a été créée en février 2000 et s'est fixée + comme objectif de devenir le partenaire Open Source de référence des + grands comptes et administrations. Pour atteindre cet objectif, + IDEALX s'est attachée à construire et à proposer des solutions + packagées et des services à haute valeur ajoutée permettant à ses + clients de mettre en oeuvre des projets stratégiques à base de + composants Open Source. + + + + Par le mode de sélection de ses intervenants, à la fois sur des + critères d'excellence technique et d'adhésion au modèle Open Source, + IDEALX a constitué une équipe homogène de haut niveau. L'importance + accordée en interne à la R&D ainsi que la + publication de ses résultats sur le site http://www.idealx.org + témoignent de cet engagement fort. + + + + IDEALX est devenu en 5 ans le leader en France des infrastructures de confiance, sécurité et dématérialisation, + avec plus de 100 références grands comptes et administrations réunis au sein du C3I, le Club des Clients + Contributeurs IDEALX. + + + + IDEALX: éditeur de logiciel + + + Tout d'abord intégrateur de briques technologiques Open Source pour les applications de sécurité, IDEALX est maintenant + éditeur de logiciel spécialisé dans les infrastructures de confiance Open Source. En France et parmis les grands comptes, + IDEALX représente 50% de part de marché avec des clients tels que Total, Areva, Gaz de France, La Poste, l'ANPE, le + Ministère des finances, Sanofi-Aventis, AGF, GAN, Thales, et bien d'autres encore. + + + + IDEALX est profitable depuis 2003 et a génèré un chiffre d'affaire de 10 millions d'euros en 2006. De plus, + elle prévoit une croissance de 40% cette année, compte recruter 15 nouveaux collaborateurs et souhaite se développer à l'international. + + + + + L'offre OpenTrust + + + L'offre OpenTrust regroupe les produits phares d'IDEALX : OpenTrust PKI, OpenTrust SCM, OpenTrust XCH et OpenTrust SPI. + Elle répond aux problématiques de sécurisation du SI et de dématérialisation des processus et applications. + Au lieu d'adopter une démarche isolée et spécifique pour chaque domaine ou application, cette offre propose + une infrastructure de confiance globale et multi-applicative. + + +
+ + L'offre OpenTrust + + +
+ + + OpenTrust-PKI + + + OpenTrust-PKI est l'infrastructure de gestion de clefs (PKI, en anglais) développée par IDEALX. Elle est simple, + ergonomique, complète et conçue pour pouvoir être déployée largement. Les solutions + concurrentes sont réputées être plus chères et d'administration complexe. + + + + + OpenTrust-SCM + + + OpenTrust-SCM (SCM pour Smart Card Manager) est un gestionnaire de cartes (à puce, sans contact, etc): il gère le cycle de vie + de la carte, est compatible avec plusieurs formats de cartes et d'applications, fournit un client facile à déployer et + peut interagir nativement avec Open-Trust-PKI. + + + + + OpenTrust-CNS + + OpenTrust-CNS (CNS pour Crypt and SHare) est un outil sécurisé d'échange et de mise à disposition de fichiers. Il permet à des + utilisateurs de déposer des fichiers, et de les mettre en accès à d'autres utilisateurs ou à des personnes extérieures, avec + utilisation de droits d'accès (consultation - modification - droit de joindre des fichiers, avec prise en compte de la date). + Il assure la confidentialité des échanges, l'authentification des utilisateurs et la traçabilité des actions. + + + + + OpenTrust-SPI + + OpenTrust-SPI (SPI pour Signature and Proof Infrastructure) est un outil de signature électronique de documents et + de gestion de la preuve. Il est prévu pour la création et la validation de signature, la génération de compléments de preuve + à valeur probante, et l'archivage légal. + Il est par exemple utilisé pour la gestion des contrats de travail au sein de plus de 90% des agences d'interim en France. + + + +
+
+ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_stage.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_stage.xml new file mode 100755 index 0000000..410fea3 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/pres_stage.xml @@ -0,0 +1,114 @@ + + Présentation du stage + + + Cette partie présente le sujet de mon stage : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft -- ainsi que le contexte technique nécessaire à sa compréhension. + + + + Origine des besoins + + + Le sujet de ce stage vient d'un besoin assez éloigné : l'ouverture de session par carte à puce. En effet, une grande banque française, important client d'OpenTrust, souhaite mettre en place cette solution au sein de leurs agences. Pour cela, les contrôleurs de domaines doivent nécessairement avoir un certificat leur permettant de prouver leur identité (cf. ). + + + + Avec un nombre assez restreint de contrôleurs, ce prérequis ne serait pas un problème. Cependant, ce client en possède un nombre impressionnant : au minimum un par agence, pour un total de plusieurs centaines de contrôleurs de domaine. + De telles proportions écartent immédiatement toutes intervention manuelle et il est nécessaire de songer à un processus automatique : l'auto-enrôlement. + + + + + OpenTrust-PKI + + + OpenTrust-PKI est une PKI souple et performante : elle dispose de nombreuses qualités techniques et fonctionnelles. + + + + Elle est dotée de plusieurs modes de fonctionnement : en ligne (pour les AC opérationnelles) ou hors ligne (pour les AC racines), mono machine ou multi machines. Et afin d'accentuer encore la sécurité de l'infrastructure, elle s'interface avec les principaux HSM du marché (Bull, nCipher, NetSafe). + + + + Interopérable avec les principaux produits du marché, elle supporte les protocoles SCEP (enrôlement de certificat) et OCSP (validation de certificat) et s'interface avec l'autorité d'horodatage développée par OpenTrust. + + + + Cependant, le coté fonctionnel n'est pas en reste : tout est fait pour faciliter le déploiement massif de certificats, que ce soit dans le cas d'une installation initiale ou bien dans le cas de la migration d'une PKI existante : + + + Indépendamment de l'AC, les certificats émis sont paramétrés (usages de la clé, identité du sujet, modalités de délivrance, etc.) par des profils intégralement modifiables par l'utilisateur. + + + + Les informations demandées à l'utilisateur se réduisent à leur strict minimum : lorsque c'est possible, elles sont puisées dans des sources d'information existantes : annuaire d'entreprise, certificat utilisateur déjà existant et éventuellement via un plugin spécifique aux besoins du client. + + + Poussée à son paroxysme (toutes les informations sont puisées d'une source fiable), cette fonction autorise la délivrance de certificats sans intervention d'un opérateur de validation. + + + + + + Afin de s'intégrer au mieux aux processus de l'entreprise, OpenTrust-PKI supporte plusieurs workflows de validation : par un opérateur, par une source externe ou encore au moyen d'une pré-validation. + + + Et éventuellement, si ces workflows ne suffisent pas, les fonctions les plus courantes de la PKI sont accessible au travers d'un connecteur SOAP, ce qui permet de les intégrer aux processus déjà existants au sein de l'entreprise. + + + + + + + + + Auto-enrôlement des clients Microsoft + + + + Définition de l'auto-enrôlement + + + Dans un article daté de 2003, Peter Gutmann, chercheur en sécurité informatique, a esquissé ce que pourrait être un auto-enrôlement (cf. ). + + Il s'agit d'un processus en trois étapes: + + + Le client doit découvrir l'adresse du point d'enrôlement, que ce soit par une adresse connue de tous ou bien par diffusion de message de découverte de service (par exemple, le protocole SLP). + + + Il doit ensuite, de manière authentifiée, obtenir les certificats de confiance (certificats d'AC) qu'il intègrera à son magasin. + + + Pour finir, il effectue une demande de certificat authentifiée, via le point d'enrôlement et obtient son certificat qu'il peut intégrer à son magasin de certificat. + + + + +
+ + Processus d'enrôlement automatique + + +
+
+ + + L'environnement Microsoft + + + Cette esquisse a été reprise par Microsoft qui, moyennant quelques ajustements (notamment via l'utilisation du protocole CMC), l'a transposée à son environnement technique. Plus de détails sur ce protocole sont disponibles en . + + +
+ + + Cahier des charges + + + L'objectif du projet, dans son ensemble, est d'aboutir à un support complet de l'auto-enrôlement des clients Windows dans le logiciel OpenTrust-PKI via un connecteur CMC. + + +
+ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/include/travail_perso.xml b/Documents/RapportDeStageM2Ami/doc-rapport/include/travail_perso.xml new file mode 100755 index 0000000..62417af --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/include/travail_perso.xml @@ -0,0 +1,306 @@ + + Travail Personnel + + + Cette partie présente le travail que j'ai effectué lors de mon stage. Je présente tout d'abord une vue d'ensemble de mon stage, j'aborde ensuite les aspects relationnels et organisationnels et je termine par les aspects techniques du projet. + + + + Aperçu + + + Le projet d'aménagement d'un connecteur CMC a débuté lors de mon arrivée chez OpenTrust et a été mené sur une période de cinq mois. David, également stagiaire, a rejoint le projet deux semaines après mon arrivée. + + +
+ Diagramme de Gantt + + +
+ + + La présente l'organisation temporelle de mon stage. Les tâches bleue sont celles que j'ai réalisées, les vertes sont celles que David, mon collègue, a réalisées et la violette est une tâche commune. La tâche grise correspond aux cinq semaines passées sur l'intégration de la PKI 3.4. La barre noire au centre de chaque tâche représente son état d'avancement. + + + + Intégration de la PKI 3.4 + + Le projet CMC avançant à vive allure, il nous a été proposé (à David et moi-même) de participer à l'intégration d'OpenTrust-PKI 3.4. Durant ces cinq semaines, nous avons intégré l'équipe de test pour procéder aux tests fonctionnels du produit. Cette opportunité m'a permis de mieux connaitre le produit, et plus particulièrement tout le coté organisationnel des infrastructures de gestion de clés. + + + Tout au long de la période d'intégration, j'ai rapporté les dysfonctionnements que je constatais en essayant, lorsque mes connaissances me le permettaient, de proposer des possibilités de correction. J'ai également formulé des propositions d'amélioration lorsque je jugeais que l'implémentation d'une fonctionnalité n'était pas optimale. La liste de mes contributions est disponible en . + + + + Je me suis aussi proposé de créer les fiches de test d'une nouvelle fonctionnalité de la version 3.4 : la gestion des langues associées aux certificats. Ce fût pour moi l'occasion de m'entretenir avec les architectes du produit et d'émettre ainsi des propositions d'amélioration. + + + + + Projet CMC + + Ce projet a débuté par l'étude de la RFC 2797 qui a ensuite débouché sur la rédaction d'une synthèse de ce standard. Ce fût une phase importante du projet, car cela m'a permis de mieux cerner l'étendue des fonctionnalités, possibilités et limitations du protocole. Afin qu'elle profite au plus grand nombre, la synthèse a été ajoutée à la documentation interne du produit. + + + + La seconde étape fût l'étude de l'existant. Avec l'aide de Christophe De Minguine, nous avons évalué l'opportunité du projet AEP. Cette évaluation fût favorable et les choses se sont accélérées : j'ai réalisé une preuve du concept afin de pouvoir apprécier promptement la faisabilité de cette solution. J'ai alors pu rapidement planifier l'organisation du projet. + + + + J'ai ensuite commencé à adapter AEP pour OpenTrust-PKI et plutôt que de développer un connecteur CMC spécifique, j'ai réutilisé le connecteur SOAP existant. De plus amples détails sur cette contorsion technique sont disponibles en . Ce recyclage a stimulé la réalisation d'un prototype qui a tout de suite intéressé le client à qui nous l'avons présenté. Parallèlement, David travaillait sur l'étude et le développement d'un connecteur SOAP spécifique, qui sera utilisé par la suite. + + + + En prévision des développements futurs, j'ai passé trois jours en autoformation sur le thème de la sécurité sous Windows avec .NETVoir .. Cette autoformation a affiné mes connaissances des technologies Microsoft impliquées dans la sécurité. Ceci m'a également fait découvrir de nouveaux horizons concernant les possibilités d'évolution d'AEP. + + + + J'ai ensuite débuté la phase de développement. Durant cette période, j'ai réfléchi aux évolutions possibles de la version originale d'AEP et j'ai concrètisé ces réflexions par une version industrielle d'AEP qui a été intégré à l'offre OpenTrust. Afin de faciliter le déploiement du logiciel chez les client, j'ai écrit la documentation d'installation et de configuration. + + + + J'ai également participé à la réalisation d'une maquette pour un futur client d'OpenTrust. Celle-ci consistait à montrer le savoir faire d'OpenTrust dans l'enrôlement automatique de machines et d'utilisateurs. La maquette a été présentée chez le client et a débouché sur une seconde maquette, plus complète et plus finalisée qui a également été présentée chez le client. + + + + + + Plus récemment, on m'a confié la réalisation d'une démonstration de gestion du cycle de vie des certificats en environnement Microsoft pour un important client d'OpenTrust. Cette démonstration constitue le point de départ du projet Armageddon auquel je participe actuellement. + + + + +
+ + + Aspects relationnels + + + Travail en équipe + + + Lors de l'intégration, j'ai rallié une équipe nouvelle et durant la première semaine, j'ai bénéficié des conseils et explications d'une personne expérimentée. Grâce à cette phase de formation, j'ai pu prendre en main le produit avec diligence et être rapidement opérationnel. + + + + L'intégration à une équipe est également un moyen d'avancer rapidement sur un projet surtout lors de l'emploi de technologies nouvelles. Il est important, en effet, d'utiliser les compétences locales pour débloquer rapidement les situations difficiles et obtenir un avis extérieur sur les orientations que l'on envisage. + + + + Tout au long de mon stage, j'ai abondamment communiqué sur l'avancement du projet, utilisant les moyens à ma disposition : wiki, listes de diffusion, courriels et réunions d'avancement. De cette manière, j'ai eu un retour rapide quant à l'orientation à donner au projet et c'est ainsi qu'une démonstration a pu être proposée à un important client d'OpenTrust. + + + + + + Collaboration avec le monde Open Source + + + Travaillant sur un projet Open Source, j'ai eu à correspondre avec le mainteneur du projet AEP pour obtenir l'aide nécessaire à mon autonomie : état d'avancement, configuration nécessaire, orientation à prendre, etc. + Il est envisagé de maintenir une base de code commune, mutualisant ainsi les corrections de bug et les évolutions futures. + + + + + + + Organisation + + + Peu de temps après la preuve du concept, je me suis appliqué à définir, en concertation avec David, une liste précise de tâches et à les échelonner dans le temps en fonction de leurs liens de précédence. Cette approche nous a permis, d'une part, d'évaluer plus précisément le temps nécessaire pour mener à bien le projet. D'autre part, nous avons pu mesurer au fur et à mesure l'avancée du projet, et ainsi éviter l'effet tunnel. + + + + Documentation + + + Le projet AEP ne disposant pas de documentation technique (pour les développeurs), j'ai réalisé, à partir des sources du programme, un diagramme statique UMLUne copie de ce diagramme est disponible en . que j'ai ensuite envoyé à Steve Parkinson, le mainteneur du projet chez Red Hat. + + + + Afin de mieux faire comprendre l'intéret du projet, son organisation et les étapes à venir, j'ai utilisé l'outil interne de documentation Trac. C'est une application web de gestion des sources (SCM) et de gestion de projet intégré. Il est très adapté pour les petits projets (quelques dizaines de personnes) et est utilisé par beaucoup de projets Open Source. Il permet de travailler de manière désynchronisée dans le temps et dans l'espace avec les personnes impliquées dans le projet. + + + + + + Aspects techniques + + + AEP, AutoEnrollment Proxy, est un serveur mandataire authentifiant. Il s'insère à la place d'une PKILa dénommination officielle de la PKI Microsoft est "Services de certificat". Microsoft et transmet les demandes de certificat à une PKI tierce : initialement, la PKI Red Hat. + + + + Services de certificat Microsoft + + + Les services de certificat, disponibles depuis Windows 2000, sont en fait une autorité de certification intégrée à l'environnement Microsoft. + Cette particularité est aussi un inconvénient: sa portée ne peut dépasser les limites de la forêtUne forêt est un ensemble d'arbres de domaines qui se font confiance les uns les autres : c'est la frontière de l'authentification Windows. Tout utilisateur ou machine en dehors de la forêt ne peut être authentifié. Voir . dans laquelle elle est installée. + C'est cette limitation qui incite certains clients à migrer vers une PKI plus souple, par exemple OpenTrust-PKI. + + + + Le fonctionnement de la PKI Microsoft est illustré par la . Il est important de noter ici l'utilisation du protocole DCOMPour de plus amples informations, voir http://en.wikipedia.org/wiki/Distributed_Component_Object_Model comme protocole de transport. + + + + + + DCOM + + + Distributed Component Object Model est une technologie de composants distribués développée par Microsoft. C'est une extension de COM, aussi appelée par certains COM with a longer wire. Cette appellation a le mérite de montrer le principal avantage de la technologie DCOM : la compatibilité binaire avec les composants déjà écrits. Mais cette compatibilité est aussi une faiblesse : elle limite les possibilités de DCOM et est source d'ennuis pour le programmeur et l'administrateur système. + + +
+ Interfaces des services de certificat + + +
+ + + Les services de certificat Microsoft utilisent DCOM comme protocole de transport entre le client et le point d'enrôlement. La Source: http://www.microsoft.com/ présente toutes les interfaces de ces services. La barre verticale symbolise la limite entre le client et le serveur. + + + + Parmi les interfaces des services de certificat, seules trois sont publiées et documentées : ICertRequest, ICertAdmin et ICertView. Ces interfaces sont présentes sur les clients Windows depuis Windows 2000. Malheureusement, les interfaces "serveur" ne sont ni publiées, ni documentées. Elle font de plus l'objet d'une licence aux États-Unis. + + + + Le projet AEP n'aurait jamais vu le jour si Microsoft n'avait pas publié par erreur les informations nécessaires à la reconstitution de l'interface ICertRequestD. + +
+ + + AEP + + + AEP, AutoEnrollment Proxy, est un serveur mandataire authentifiant. Il accepte les demandes authentifiées de certificat par l'interface DCOM ICertRequestD, les transmet à une PKI tierce et retourne le certificat généré au client. (voir ). + + +
+ Processus d'enrôlement avec AEP + + +
+ + + Ce niveau d'indirection supplémentaire permet de découpler la PKI du domaine de sécurité des clients Windows (l'ensemble des domaines qui composent la forêt), comme illustré par la . + + +
+ Intégration d'AEP dans l'infrastructure Microsoft + + +
+ + + Modifications apportées à AEP + + + Les premières actions que j'ai dû entreprendre concernaient la mise en place d'AEP : étudier son fonctionnement, installer un environnement de développement et intégrer AEP au système d'exploitation (enregistrement des classes, création des services, etc.). + + + + Je me suis ensuite consacré à la création d'un module de communication avec la PKI. Comme il existait un connecteur SOAP sur celle-ci et qu'il était fonctionnellement adapté, je l'ai réutilisé. Afin de développer ce module, j'ai utilisé le SOAP Toolkit de Microsoft et ai finalement réussi à communiquer avec la PKI à partir d'AEP. + + + + L'étape suivante fût la réalisation d'un module d'auto-remplissage : à partir des informations d'authentification du client et en utilisant l'Active Directory, obtenir le nom commun, le FQDN et le GUIDLe GUID est un identifiant utilisé par les technologies Microsoft. de la machine. + + + + Pour finir, j'ai réalisé une version industrielle d'AEP utilisant le framework .NET et intégrant un système de plugin pour plus de souplesse. + + + + + Modifications prévues d'AEP + + + A l'aide de l'expérience acquise avec cette première version d'AEP, j'ai émis des propositions d'améliorations : + + + continuer l'industrialisation (aisance de configuration, stabilité, etc.), + + + étendre le système de plugin à tout le logiciel afin de le rendre plus facilement extensible, + + + améliorer l'interface de configuration. + + + + + +
+ + + Problèmes rencontrés + + + L'interface d'enrôlement des services de certificat n'étant ni publiée par Microsoft, ni documentée, son utilisation fût difficile. + En effet, le format et la sémantique des paramètres (dix au total) n'étant pas connus et l'unique message + d'erreur du client d'enrôlement windows n'étant pas explicite (voir ), la mise au point n'en fût que plus difficile. + +
+ Message d'erreur du client d'enrôlement + + +
+ + La raison de cette incapacité à installer le certificat généré est que le sixième paramètre de la méthode Request de l'interface ICertRequestD (cf. ) doit contenir la chaîne de certification complète comprenant le certificat généré et ce bien qu'il soit aussi retourné dans le septième paramètre. +
+ + + Une autre difficulté que j'ai rencontrée est le message d'erreur de la . + +
+ Message d'erreur du client d'enrôlement + + +
+ + Cette erreur est liée à un durcissement de la politique de sécurité de Windows 2003 Server, qui a lieu lors de l'installation du Service Pack 1Ce comportement est décrit dans http://support.microsoft.com/kb/903220 mais n'est conforme que lorsque les services de certificat sont installés sur la machine.. La raison de ce problème est que la sécurité des interfaces DCOM est désormais "ACL based" et "role based" : il ne suffit pas de modifier la liste de contrôle d'accès à l'interface DCOM concernée, il faut également modifier la liste des membres du groupe "DCOM Users". +
+ + + De nombreuses autres erreurs liées à la confidentialité des interfaces d'enrôlement ont ralenti mon avancée. À chaque fois, ma démarche a été identique : + + + vérifier que le problème n'est pas déjà connu en consultant la base de connaissances Microsoft, + + + consulter les forums, archives de listes de diffusion et autres sources non fiables, + + + analyser finement le journal des événements, + + + analyser les trames qui circulent sur le réseau, + + + lister les appels système à la recherche d'échecs, + + + procéder par hypothèse / expérience. + + + + + + La dernière source de problèmes fût le manque de documentation sur DCOM. C'est une technologie dépréciée en faveur de .NET, les documentations en ligne sont souvent incomplètes et imprécises, tous les livres traitant de ce sujet ne sont pas réédités et ne sont plus disponibles. + J'ai finalement réussi à me procurer la référence sur le sujet : Professionnal DCOM Programming de Richard GRIMES, ce qui m'a permis de mieux comprendre les tenants et aboutissants de cette technologie. + +
+
+
+ diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/main.xml b/Documents/RapportDeStageM2Ami/doc-rapport/main.xml new file mode 100755 index 0000000..806ddd1 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/main.xml @@ -0,0 +1,70 @@ + + + + + + + + + + +]> + + + + Étude et développement d'un connecteur CMC pour OpenTrust-PKI + Rapport de stage de fin d’études + + NicolasMASSÉ + + OpenTrust + + nicolas.masse@opentrust.com + + + 2007 + Nicolas MASSÉ + + + + Dans le cadre de mes études à l'université de CAEN, je fût en stage au sein d'OpenTrust six mois durant. Lors de cette période, j'ai participé à la vie de l'entreprise en joignant une équipe d'intégrateurs pendant cinq semaines, mais j'ai également réalisé mon projet de fin d'étude : étude et développement d'un connecteur CMC pour le logiciel OpenTrust-PKI -- c'est à dire un connecteur destiné à l'auto-enrôlement des clients Microsoft. Ce projet a pour objectif de simplifier la phase de déploiement des certificats dans un environnement Microsoft, permettant ainsi de diminuer le TCO d'OpenTrust-PKI. Ce présent rapport présente le travail que j'ai réalisé pendant ce stage, le contexte technique nécessaire à sa compréhension et les résultats obtenus. + + + + + + + &preface; + + + &pres_ent; + + + &pres_stage; + + + &existant; + + + &travail_perso; + + + &conclusion; + + + &appendices; + + + Contributions à l'intégration de la PKI 3.4 + + + &app_int; + + + + + &biblio; + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/xsl/fo.xsl b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/fo.xsl new file mode 100755 index 0000000..b05a9f4 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/fo.xsl @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + Département d'informatique + Campus Côte de Nacre + Bd Maréchal Juin + BP 5186 + F-14032 Caen Cedex + + + + + + + + OpenTrust + 15-17 avenue de Ségur + 75007 PARIS + http://www.opentrust.com/ + + + + + + + + + + + + + + + + + + + + Suivi Université: + OTMANI Ayoub + Suivi entreprise: + BROSSARD Mathias + + + + + Mars - Septembre 2007 + + + + + + + + + + + + + + + + titlepage-even + titlepage-odd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/xsl/html-chunked.xsl b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/html-chunked.xsl new file mode 100755 index 0000000..4eefab5 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/html-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStageM2Ami/doc-rapport/xsl/xhtml-chunked.xsl b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/xhtml-chunked.xsl new file mode 100755 index 0000000..564c1c6 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/doc-rapport/xsl/xhtml-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStageM2Ami/globals/Makefile b/Documents/RapportDeStageM2Ami/globals/Makefile new file mode 100755 index 0000000..34e0f07 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/Makefile @@ -0,0 +1,122 @@ +# Environment variables +export PATH := $(HOME)/bin/fop:$(PATH) +export CLASSPATH := xsl/xsl-stylesheets/extensions/xalan25.jar + +# Do you need a proxy ? +export FOP_OPTS := -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 + +# Or any setting +export FOP_OPTS := $(FOP_OPTS) -Xmx1G -Djava.awt.headless=true + +# Target filenames +PDF_FILE := book.pdf +RTF_FILE := book.rtf +TXT_FILE := book.txt +PS_FILE := book.ps +XHTML_DIR := book-xhtml +XHTML1_DIR := onepage-xhtml +HTML_DIR := book-html +HTML1_DIR := onepage-html +XHTML_ARCH := book-xhtml.tar.bz2 +HTML_ARCH := book-html.tar.bz2 +XHTML1_ARCH := onepage-xhtml.tar.bz2 +HTML1_ARCH := onepage-html.tar.bz2 +VALIDITY_FILE := validity + +# Source filenames +XSL_FO_FILE := xsl/fo.xsl +XSL_XHTML_FILE := xsl/xhtml-chunked.xsl +XSL_HTML_FILE := xsl/html-chunked.xsl +XSL_XHTML1_FILE := xsl/xhtml-onepage.xsl +XSL_HTML1_FILE := xsl/html-onepage.xsl +DB_FILE := main.xml + +# Titlepage customization +TP_SPEC_FILE := xsl/titlepage.spec.xml +TP_XSL_FILE := xsl/titlepage.xsl +TP_TEMPLATE_FILE := ../globals/xsl-stylesheets/template/titlepage.xsl + +# Do you have a custom titlepage ? +TP_XSL_REAL := $(shell if test -f $(TP_SPEC_FILE); then echo $(TP_XSL_FILE); fi) + +# FOP configuration +FOP := fop +FOP_CONF := fop.xconf + +# XSLT configuration +XSLTPROC := xsltproc + +# Validity check +VALIDATOR := xmllint --noout --valid + +# Extract external entities +XML_FILES := $(wildcard include/*.xml) +DEPENDENCIES := $(TP_XSL_REAL) $(VALIDITY_FILE) + +# Default target +all: $(PDF_FILE) $(RTF_FILE) $(TXT_FILE) $(PS_FILE) $(XHTML_ARCH) $(HTML_ARCH) $(XHTML1_ARCH) $(HTML1_ARCH) + +$(VALIDITY_FILE): $(DB_FILE) $(XML_FILES) + $(VALIDATOR) $< + touch $(VALIDITY_FILE) + +$(PDF_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -pdf $@ + +$(RTF_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -rtf $@ + +$(TXT_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -txt $@ + +$(PS_FILE): $(DB_FILE) $(XSL_FO_FILE) $(DEPENDENCIES) + $(FOP) -c $(FOP_CONF) -xsl $(XSL_FO_FILE) -xml $< -ps $@ + +$(XHTML_DIR): $(DB_FILE) $(XSL_XHTML_FILE) $(DEPENDENCIES) + if [ ! -e $(XHTML_DIR) ]; then mkdir $(XHTML_DIR); ln -s ../img $(XHTML_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(XHTML_DIR)/std-img; fi + $(XSLTPROC) $(XSL_XHTML_FILE) $< + touch $(XHTML_DIR) + +$(HTML_DIR): $(DB_FILE) $(XSL_HTML_FILE) $(DEPENDENCIES) + if [ ! -e $(HTML_DIR) ]; then mkdir $(HTML_DIR); ln -s ../img $(HTML_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(HTML_DIR)/std-img; fi + $(XSLTPROC) $(XSL_HTML_FILE) $< + touch $(HTML_DIR) + +$(XHTML1_DIR): $(DB_FILE) $(XSL_XHTML1_FILE) $(DEPENDENCIES) + if [ ! -e $(XHTML_DIR) ]; then mkdir $(XHTML1_DIR); ln -s ../img $(XHTML1_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(XHTML1_DIR)/std-img; fi + $(XSLTPROC) -output $@/index.xhtml $(XSL_XHTML1_FILE) $< + touch $(XHTML1_DIR) + +$(HTML1_DIR): $(DB_FILE) $(XSL_HTML1_FILE) $(DEPENDENCIES) + if [ ! -e $(HTML1_DIR) ]; then mkdir $(HTML1_DIR); ln -s ../img $(HTML1_DIR)/img; \ + ln -s ../../globals/xsl-stylesheets/images $(HTML1_DIR)/std-img; fi + $(XSLTPROC) -output $@/index.html $(XSL_HTML1_FILE) $< + touch $(HTML1_DIR) + +$(HTML_ARCH): $(HTML_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(XHTML_ARCH): $(XHTML_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(HTML1_ARCH): $(HTML1_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(XHTML1_ARCH): $(XHTML1_DIR) + tar -jcv -h --exclude '.svn' --exclude '*.svg' -f $@ $< + +$(TP_XSL_FILE): $(TP_SPEC_FILE) + $(XSLTPROC) -output $@ $(TP_TEMPLATE_FILE) $< + +clean: + rm -f $(PDF_FILE) $(TP_XSL_FILE) $(VALIDITY_FILE) $(HTML_ARCH) $(XHTML_ARCH) $(RTF_FILE) $(TXT_FILE) $(PS_FILE) + rm -rf $(XHTML_DIR) $(HTML_DIR) + +test: + @echo '$(XML_FILES)' + +.PHONY: all clean test + diff --git a/Documents/RapportDeStageM2Ami/globals/common-fo.xsl b/Documents/RapportDeStageM2Ami/globals/common-fo.xsl new file mode 100755 index 0000000..a342f97 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/common-fo.xsl @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + ../globals/xsl-stylesheets/images/ + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + dashed + .5pt + #555555 + #EEEEEE + 5pt + + + + + sans-serif + + + + + + + + + + + + + + + img/ + + + + + + + + + 90% + + + + #EEEEEE + + + + + + + + + + + + transparent + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + + 3pt + 1pt + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pt + + + + + + + + pt + + + + + + + + + + pt + + + + + + + + pt + + + + + + + + pt + + + diff --git a/Documents/RapportDeStageM2Ami/globals/common-html-chunked.xsl b/Documents/RapportDeStageM2Ami/globals/common-html-chunked.xsl new file mode 100755 index 0000000..bc25612 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/common-html-chunked.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStageM2Ami/globals/common-html-onepage.xsl b/Documents/RapportDeStageM2Ami/globals/common-html-onepage.xsl new file mode 100755 index 0000000..087e250 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/common-html-onepage.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStageM2Ami/globals/common-xhtml-chunked.xsl b/Documents/RapportDeStageM2Ami/globals/common-xhtml-chunked.xsl new file mode 100755 index 0000000..9f60d73 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/common-xhtml-chunked.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStageM2Ami/globals/common-xhtml-onepage.xsl b/Documents/RapportDeStageM2Ami/globals/common-xhtml-onepage.xsl new file mode 100755 index 0000000..d52154a --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/common-xhtml-onepage.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + std-img/ + + + + + + + + std-img/callouts/ + + + img/ + + + diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/addfont.sh b/Documents/RapportDeStageM2Ami/globals/fonts/addfont.sh new file mode 100755 index 0000000..377d335 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/addfont.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +FOP_PREFIX="$HOME/bin/fop" +CLASSPATH="$FOP_PREFIX/build/fop.jar:$FOP_PREFIX/lib/xercesImpl.jar:$FOP_PREFIX/lib/xalan.jar" +CLASSPATH="$CLASSPATH:$FOP_PREFIX/lib/avalon-framework.jar:$FOP_PREFIX/lib/xml-apis.jar" +CLASSPATH="$CLASSPATH:$FOP_PREFIX/lib/commons-logging-1.0.4.jar:$FOP_PREFIX/lib/commons-io-1.1.jar" +CLASS="org.apache.fop.fonts.apps.TTFReader" +ENC="ansi" + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +java -cp "$CLASSPATH" "$CLASS" -enc "$ENC" "$1" "$(echo "$1" |sed 's/\.[Tt][Tt][Ff]//').xml" + diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/cour.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/cour.ttf new file mode 100755 index 0000000..9b06e57 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/cour.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/cour.xml b/Documents/RapportDeStageM2Ami/globals/fonts/cour.xml new file mode 100755 index 0000000..04eafd2 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/cour.xml @@ -0,0 +1 @@ +CourierNew571422612-188-21-67963710203500TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/courbd.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/courbd.ttf new file mode 100755 index 0000000..9b8d4f0 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/courbd.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/courbd.xml b/Documents/RapportDeStageM2Ami/globals/fonts/courbd.xml new file mode 100755 index 0000000..94cb60a --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/courbd.xml @@ -0,0 +1 @@ +CourierNew,Bold592443633-208-46-71070112213500TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/courbi.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/courbi.ttf new file mode 100755 index 0000000..106b2bf Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/courbi.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/courbi.xml b/Documents/RapportDeStageM2Ami/globals/fonts/courbi.xml new file mode 100755 index 0000000..29fa108 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/courbi.xml @@ -0,0 +1 @@ +CourierNew,BoldItalic592443633-208-102-3768361003990-12TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/couri.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/couri.ttf new file mode 100755 index 0000000..31b90ae Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/couri.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/couri.xml b/Documents/RapportDeStageM2Ami/globals/fonts/couri.xml new file mode 100755 index 0000000..6ebba16 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/couri.xml @@ -0,0 +1 @@ +CourierNew,Italic571422612-188-67-2738001000990-12TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgia.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/georgia.ttf new file mode 100755 index 0000000..c24d59b Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/georgia.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgia.xml b/Documents/RapportDeStageM2Ami/globals/fonts/georgia.xml new file mode 100755 index 0000000..3dddf35 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/georgia.xml @@ -0,0 +1 @@ +Georgia692481756-216-173-21611669123300TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.ttf new file mode 100755 index 0000000..2cfce23 Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.xml b/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.xml new file mode 100755 index 0000000..f386c89 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/georgiab.xml @@ -0,0 +1 @@ +Georgia,Bold692484756-216-190-21612959123300TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.ttf new file mode 100755 index 0000000..27abc9d Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.xml b/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.xml new file mode 100755 index 0000000..72a9a2d --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/georgiai.xml @@ -0,0 +1 @@ +Georgia,Italic692488756-216-195-2161196912970-13TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.ttf b/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.ttf new file mode 100755 index 0000000..f60957e Binary files /dev/null and b/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.ttf differ diff --git a/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.xml b/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.xml new file mode 100755 index 0000000..086bf56 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fonts/georgiaz.xml @@ -0,0 +1 @@ +Georgia,BoldItalic692495756-216-242-2161354914970-13TRUETYPEWinAnsiEncoding0255 \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/globals/fop.xconf b/Documents/RapportDeStageM2Ami/globals/fop.xconf new file mode 100755 index 0000000..1e82e37 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/globals/fop.xconf @@ -0,0 +1,149 @@ + + + + + + + . + + + ../globals/fonts + + + 300 + + 300 + + + + + + + + + + + flate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documents/RapportDeStageM2Ami/template/Makefile b/Documents/RapportDeStageM2Ami/template/Makefile new file mode 120000 index 0000000..3a269a0 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/Makefile @@ -0,0 +1 @@ +../globals/Makefile \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/template/docbook b/Documents/RapportDeStageM2Ami/template/docbook new file mode 120000 index 0000000..42b7ae3 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/docbook @@ -0,0 +1 @@ +../globals/docbook \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/template/fop.xconf b/Documents/RapportDeStageM2Ami/template/fop.xconf new file mode 120000 index 0000000..9113e46 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/fop.xconf @@ -0,0 +1 @@ +../globals/fop.xconf \ No newline at end of file diff --git a/Documents/RapportDeStageM2Ami/template/main.xml b/Documents/RapportDeStageM2Ami/template/main.xml new file mode 100755 index 0000000..6ece725 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/main.xml @@ -0,0 +1,35 @@ + + + + + + Title + + JohnSMITH + + ACME corp. + IT dept. + + john@acme.com + + + 2000 + ACME corp. + + + + + Foreword + + + + + My First Document with Docbook + + What is docbook ? + A paragraph + + + + diff --git a/Documents/RapportDeStageM2Ami/template/xsl/fo.xsl b/Documents/RapportDeStageM2Ami/template/xsl/fo.xsl new file mode 100755 index 0000000..ab87913 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/xsl/fo.xsl @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/Documents/RapportDeStageM2Ami/template/xsl/html-chunked.xsl b/Documents/RapportDeStageM2Ami/template/xsl/html-chunked.xsl new file mode 100755 index 0000000..4eefab5 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/xsl/html-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/RapportDeStageM2Ami/template/xsl/xhtml-chunked.xsl b/Documents/RapportDeStageM2Ami/template/xsl/xhtml-chunked.xsl new file mode 100755 index 0000000..564c1c6 --- /dev/null +++ b/Documents/RapportDeStageM2Ami/template/xsl/xhtml-chunked.xsl @@ -0,0 +1,9 @@ + + + + + + diff --git a/Documents/Schemas/AEP-Fonct.VSD b/Documents/Schemas/AEP-Fonct.VSD new file mode 100755 index 0000000..0ff6f2f Binary files /dev/null and b/Documents/Schemas/AEP-Fonct.VSD differ diff --git a/Documents/Schemas/AEP-Fonct.png b/Documents/Schemas/AEP-Fonct.png new file mode 100755 index 0000000..b8e7bc4 Binary files /dev/null and b/Documents/Schemas/AEP-Fonct.png differ diff --git a/Documents/Schemas/AEP-Fonct_EN.VSD b/Documents/Schemas/AEP-Fonct_EN.VSD new file mode 100755 index 0000000..19d90da Binary files /dev/null and b/Documents/Schemas/AEP-Fonct_EN.VSD differ diff --git a/Documents/Schemas/AEP-Fonct_EN.png b/Documents/Schemas/AEP-Fonct_EN.png new file mode 100755 index 0000000..e16987b Binary files /dev/null and b/Documents/Schemas/AEP-Fonct_EN.png differ diff --git a/Documents/Schemas/AEP-IDXPKI.VSD b/Documents/Schemas/AEP-IDXPKI.VSD new file mode 100755 index 0000000..d81fb88 Binary files /dev/null and b/Documents/Schemas/AEP-IDXPKI.VSD differ diff --git a/Documents/Schemas/AEP-IDXPKI.png b/Documents/Schemas/AEP-IDXPKI.png new file mode 100755 index 0000000..bcd5516 Binary files /dev/null and b/Documents/Schemas/AEP-IDXPKI.png differ diff --git a/Documents/Schemas/AEP-NG.png b/Documents/Schemas/AEP-NG.png new file mode 100755 index 0000000..706ee9c Binary files /dev/null and b/Documents/Schemas/AEP-NG.png differ diff --git a/Documents/Schemas/AEP-NG.vsd b/Documents/Schemas/AEP-NG.vsd new file mode 100755 index 0000000..07c4f53 Binary files /dev/null and b/Documents/Schemas/AEP-NG.vsd differ diff --git a/Documents/Schemas/Enroll-ActiveSync.png b/Documents/Schemas/Enroll-ActiveSync.png new file mode 100755 index 0000000..4dede01 Binary files /dev/null and b/Documents/Schemas/Enroll-ActiveSync.png differ diff --git a/Documents/Schemas/Enroll-Mobile.png b/Documents/Schemas/Enroll-Mobile.png new file mode 100755 index 0000000..66cdf02 Binary files /dev/null and b/Documents/Schemas/Enroll-Mobile.png differ diff --git a/Documents/Schemas/Enroll-PDA.vsd b/Documents/Schemas/Enroll-PDA.vsd new file mode 100755 index 0000000..9bd4389 Binary files /dev/null and b/Documents/Schemas/Enroll-PDA.vsd differ diff --git a/Documents/Schemas/Enroll-Phone.png b/Documents/Schemas/Enroll-Phone.png new file mode 100755 index 0000000..8544357 Binary files /dev/null and b/Documents/Schemas/Enroll-Phone.png differ diff --git a/Documents/Schemas/Enroll-Phone.vsd b/Documents/Schemas/Enroll-Phone.vsd new file mode 100755 index 0000000..275b7d2 Binary files /dev/null and b/Documents/Schemas/Enroll-Phone.vsd differ diff --git a/Documents/Schemas/IDX-Enroll.png b/Documents/Schemas/IDX-Enroll.png new file mode 100755 index 0000000..d6d97cb Binary files /dev/null and b/Documents/Schemas/IDX-Enroll.png differ diff --git a/Documents/Schemas/IDX-Enroll.vsd b/Documents/Schemas/IDX-Enroll.vsd new file mode 100755 index 0000000..7c632e8 Binary files /dev/null and b/Documents/Schemas/IDX-Enroll.vsd differ diff --git a/Documents/Schemas/LRA_routage_aggregation.odg b/Documents/Schemas/LRA_routage_aggregation.odg new file mode 100755 index 0000000..77f501b Binary files /dev/null and b/Documents/Schemas/LRA_routage_aggregation.odg differ diff --git a/Documents/Schemas/LRA_routage_aggregation.png b/Documents/Schemas/LRA_routage_aggregation.png new file mode 100755 index 0000000..feadde4 Binary files /dev/null and b/Documents/Schemas/LRA_routage_aggregation.png differ diff --git a/Documents/Schemas/PDA_Smartphone.ppt b/Documents/Schemas/PDA_Smartphone.ppt new file mode 100755 index 0000000..ad03fa6 Binary files /dev/null and b/Documents/Schemas/PDA_Smartphone.ppt differ diff --git a/Documents/Schemas/PKI_MS-Fonct.VSD b/Documents/Schemas/PKI_MS-Fonct.VSD new file mode 100755 index 0000000..0dc2614 Binary files /dev/null and b/Documents/Schemas/PKI_MS-Fonct.VSD differ diff --git a/Documents/Schemas/PKI_MS-Fonct.png b/Documents/Schemas/PKI_MS-Fonct.png new file mode 100755 index 0000000..0090627 Binary files /dev/null and b/Documents/Schemas/PKI_MS-Fonct.png differ diff --git a/Documents/Schemas/Plugins AEP.png b/Documents/Schemas/Plugins AEP.png new file mode 100755 index 0000000..09d0f4d Binary files /dev/null and b/Documents/Schemas/Plugins AEP.png differ diff --git a/Documents/Schemas/Plugins AEP.vsd b/Documents/Schemas/Plugins AEP.vsd new file mode 100755 index 0000000..af940a4 Binary files /dev/null and b/Documents/Schemas/Plugins AEP.vsd differ diff --git a/Documents/Schemas/autoenroll.png b/Documents/Schemas/autoenroll.png new file mode 100755 index 0000000..ccda6fa Binary files /dev/null and b/Documents/Schemas/autoenroll.png differ diff --git a/Documents/Schemas/autoenroll.vsd b/Documents/Schemas/autoenroll.vsd new file mode 100755 index 0000000..d845063 Binary files /dev/null and b/Documents/Schemas/autoenroll.vsd differ diff --git a/Documents/Schemas/statique.pdf b/Documents/Schemas/statique.pdf new file mode 100755 index 0000000..19f32f2 Binary files /dev/null and b/Documents/Schemas/statique.pdf differ diff --git a/Documents/Schemas/statique.png b/Documents/Schemas/statique.png new file mode 100755 index 0000000..83882f6 Binary files /dev/null and b/Documents/Schemas/statique.png differ diff --git a/Documents/Schemas/statique.vsd b/Documents/Schemas/statique.vsd new file mode 100755 index 0000000..cf5062a Binary files /dev/null and b/Documents/Schemas/statique.vsd differ diff --git a/Documents/Soutenance/slides.ppt b/Documents/Soutenance/slides.ppt new file mode 100755 index 0000000..6e16502 Binary files /dev/null and b/Documents/Soutenance/slides.ppt differ diff --git a/Documents/SoutenanceM2Ami/slides.pdf b/Documents/SoutenanceM2Ami/slides.pdf new file mode 100755 index 0000000..f60d72b Binary files /dev/null and b/Documents/SoutenanceM2Ami/slides.pdf differ diff --git a/Documents/SoutenanceM2Ami/slides.ppt b/Documents/SoutenanceM2Ami/slides.ppt new file mode 100755 index 0000000..72ab1e7 Binary files /dev/null and b/Documents/SoutenanceM2Ami/slides.ppt differ