API de demandes/inscriptions/manipulations de certificats pour Windows Vista et Windows 2008 Server

Le développement d’applications ayant pour but de faire des demandes et de manipuler des certificats change radicalement entre Windows XP/2003 et Windows Vista/2008. Voici une synthèse pour vous permettre d’y voir plus clair.

 

XEnroll.dll utilisé pour Windows 2000, XP, 2003

Sur Windows 2000, XP, 2003 Server nous pouvons utiliser le composant XEnroll.dll. Ce composant implémente les interfaces ICEnroll, ICEnroll2, ICEnroll3, et ICEnroll4 ainsi que IEnroll, IEnroll2, et IEnroll4.

Lien d’informations :

 

CertEnroll.dll utilisé pour Windows Vista, 2008

Sur Windows Vista et 2008 Server, le composant XEnroll.dll a été retiré et n’est plus utilisable.

CertEnroll.dll est le nouveau composant disponible. Il implémente plusieurs interfaces COM pour gérer les demandes et installations des certificats.

Le point d’entrée de la documentation est :

 

Explications sur ce changement

Voici les principales raisons qui ont conduit à ce changement :

XEnroll

  • XEnroll implémente deux séries d’interfaces non synchronisées : les modifications des interfaces ICEnroll n’étaient pas forcement effectuées dans les interfaces IEnroll et vis et versa
  • XEnroll constitue une API ancienne difficile à maintenir et à garder sécurisée
  • XEnroll est difficile à utiliser : ce composant contient plusieurs centaines de méthodes et propriétés ajoutées au fur et a mesure des années. Par exemple, le fait d’appeler une fonction peut changer le comportement d’une autre fonction. Ceci explique la difficulté que rencontrent les développeurs et les testeurs du composant ainsi que les développeurs qui utilisent ce composant

CertEnroll

  • CertEnroll est un composant COM adapté au développement orienté objet
  • Une partie des fonctionnalités de CertEnroll peuvent être utilisées par script dans des pages Web
  • CertEnroll implémente une série structurée d’interfaces
  • Ces interfaces sont plus facilement compréhensibles et utilisables par les développeurs

 

Pour information, voici des pointeurs vers les sources de ces explications :

AD CS: Web Enrollment - https://technet2.microsoft.com/windowsserver2008/en/library/c47e0d48-abeb-493e-a9f1-19bba1537ba51033.mspx?mfr=true

Certificate-Related Changes for Vista - https://technet2.microsoft.com/WindowsVista/en/library/73bdca07-a9f0-40d7-a26e-6f4f11759e4c1033.mspx?mfr=true

 

Recommandations l’utilisation des API de "Certificate Enrollment"

Le remplacement de XEnroll.dll sur Windows Vista et 2008 Server par CertEnroll.dll constitue un arrêt dans la compatibilité des développements qui utilisent XEnroll.dll.

Dans un parc hétérogène de clients Windows XP et Windows Vista par exemple, la recommandation est donc :

Développer et maintenir deux codes/applications différents dont l’appel/l’installation se fera en fonction de la version du client détecté/adressé

  • Le premier code utilise XEnroll.dll pour les clients avant Windows Vista
  • Le second code utilise CertEnroll.dll pour les clients après Windows Vista

 

Voici la documentation sur la correspondance des API XEnroll.dll avec les nouvelles API CertEnroll.dll :