Un X504Certificate può essere recuperato dal negozio di certificati da ASP.NET senza autorizzazioni del file system?

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

Domanda

Dove dovrebbe un certificato che appare nel nodo Trusted Root Certification Authorities in Certmgr.msc essere mantenuto in modo che un'app Web IIS possa ottenerla e firmare un'asserzione SAML con esso? C'è un modo per estrarre il certificato dai certificati "Hive" direttamente, che non richiede autorizzazioni del file-system? O è necessario esportare il certificato in una cartella a cui l'utente incorporato IIS7 ha autorizzazioni di accesso?

Il primo parametro del metodo del metodo X509Certificate2.Import() è fileName.

Se esporta il certificato e inserisco il file nella gerarchia di cartelle di progetto Visual Studio 2012 e fornisce un percorso completamente qualificato per il metodo Import () , il certificato Import ha esito positivo, ma solo se l'applicazione è in esecuzione in Visual Studio's incorporato server , non se è in esecuzione nel server Web IIS locale.

Ho provato a usare il nome amichevole con X509KeyStorageFlags.MachineKeySet ma non funzionava.

Modifica: funziona quando si utilizza il server di Visual Studio incorporato ma non il server IIS7 locale in 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)
.

Quindi ho bisogno di scoprire come fornire l'accesso predefinito dell'app per questo certificato in Windows 7.

È stato utile?

Soluzione

Non "import", crea semplicemente un'istanza.Formalmente, apri un negozio chiave e loop attraverso i certificati.E sì, non è necessario che qualsiasi autorizzazione del filesystem, tuttavia, per accedere alla chiave privata, l'identità del pool di applicazione deve avere il permesso alla chiave, si imposta l'autorizzazione nello snapin del certificato della console MMC.

Modifica: il codice per accedere al certificato sarebbe qualcosa come:

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top