Pendant une demi-journée, j’ai cherché sur Google une manière de lire un fichier .pfx
et d’importer les certificates dans le magasin de certificates.
Jusqu’à présent, je suis capable de lire le fichier .pfx
avec X509Certifcate
et d’importer un certificate dans le fichier .pfx
. Jusqu’ici tout va bien, mais il y a trois certificates dans le fichier .pfx
et lors du chargement du .pfx
avec X509Certificate
, je ne peux pas voir les deux autres certificates.
Le certificate a été exporté avec
* Échange d’informations personnelles – PKCS # 12 (.PFX)
Inclure tous les certificates dans le chemin de certificateion si possible
Activer la protection renforcée (nécessite IE 5.0, NT 4.0 SP4 ou supérieur)
Ce sont les options sélectionnées lors de l’exportation du (des) certificate (s). Je sais qu’il y a trois certificates parce que je vais manuellement dans le certstore (MMC) et l’importe moi-même dans un dossier personnel.
Vous devriez pouvoir obtenir un object de collection contenant les certs dans votre fichier .pfx en utilisant la classe X509Certificate2Collection
… voici un exemple de code C #:
ssortingng certPath = ; ssortingng certPass = ; // Create a collection object and populate it using the PFX file X509Certificate2Collection collection = new X509Certificate2Collection(); collection.Import(certPath, certPass, X509KeyStorageFlags.PersistKeySet);
Ensuite, vous pouvez parcourir la collection:
foreach (X509Certificate2 cert in collection) { Console.WriteLine("Subject is: '{0}'", cert.Subject); Console.WriteLine("Issuer is: '{0}'", cert.Issuer); // Import the certificatees into X509Store objects }
Selon le type de certificate (cert. Client, cert. Intermédiaire, racine), vous devez ouvrir le magasin de certificates approprié (en tant qu’object X509Store
) pour l’importer.
Découvrez la documentation X509Store
:
Et les différents membres de l’énumération StoreName
:
Si j’ai bien compris, vous souhaitez utiliser StoreName.My
pour les certificates clients contenant une clé privée, StoreName.CertificateAuthority
pour les certificates de certificateion intermédiaires, et StoreName.Root
pour les certificates de certificateion racine.