Une X509Certificate être récupérée dans le magasin de certificats par ASP.NET sans autorisations de système de fichiers?

StackOverflow https://stackoverflow.com//questions/20007824

Question

Où dois-un certificat qui apparaît dans la Trusted Root Certification Authorities nœud certmgr.msc être conservé ainsi que d'un IIS web app peut l'obtenir et de signer une Assertion SAML avec elle?Est-il un moyen pour extraire le certificat de l'certificats de "la ruche" directement, qui ne nécessite pas d'autorisations de système de fichiers?Ou est-il nécessaire à l'exportation du certificat à un dossier dans lequel le IIS7 intégré utilisateur possède les autorisations d'accès?

L' X509Certificate2.Import() la méthode du premier paramètre est fileName.

Si j'ai exporter le Certificat et placez le fichier dans mon Projet Visual Studio 2012 hiérarchie de dossiers et de fournir un chemin d'accès complet à l' Import() méthode, le cert importation réussit, mais seulement si l'application est en cours d'exécution dans Visual Studio intégré serveur, pas si il fonctionne dans le Local Serveur Web IIS.

J'ai essayé d'utiliser le Nom Convivial avec X509KeyStorageFlags.MachineKeySet mais cela ne fonctionne pas.

EDIT:Cela fonctionne lorsque vous utilisez Visual Studio serveur, mais pas le LOCAL Serveur IIS7 dans Windows 7:

            certStore = New X509Store(StoreLocation.CurrentUser)
            certStore.Open(OpenFlags.ReadOnly)
            Dim thumbprint As String
            thumbprint = ConfigurationManager.AppSettings("thumb").ToString
            certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, False)
            certStore.Close()
            cert = certCollection(0)

j'ai donc besoin de savoir comment donner de la valeur par Défaut d'Application de la Piscine l'accès à ce certificat dans Windows 7.

Était-ce utile?

La solution

Vous n'avez pas "importer", il suffit de créer une instance.Officiellement, vous ouvrez un magasin de clés et boucle à travers les certificats.Et oui, vous n'avez pas besoin de tout système de fichiers permission, cependant, pour accéder à la clé privée, votre identité de pool d'applications doit avoir l'autorisation de la clé, vous définissez l'autorisation dans le certificat de composant logiciel enfichable de la console mmc.

Edit:le code d'accès du certificat serait quelque chose comme:

var store = new X509Store( name, location );
store.Open( OpenFlags.ReadOnly );

foreach ( var cert in store.Certificates )
   ... loop and match, by thumbprint, friendly name or whatever else
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top