sto avendo seri problemi che cercano di assegnare una chiave privata a causa di questo errore.
System.Security.Cryptography.CryptographicException: Keyset does not exist
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var col = store.Certificates.Find(X509FindType.FindBySerialNumber, "00873476DC47C5BB614EA96F2A9CE744A6", false);
var cert = col[0];
var xmlUnSignedSaml = new XmlDocument();
xmlUnSignedSaml.LoadXml(assertion);
xmlUnSignedSaml.PreserveWhitespace = true;
SignedXml signedXml = new SignedXml(xmlUnSignedSaml);
signedXml.SigningKey = cert.PrivateKey; //<<<--- Exception thrown.
ho verificato quanto segue:
- il certificato dispone di una chiave privata.
- Lettura Le autorizzazioni per il certificato vengono concesse a IUSR, SERVIZIO DI RETE, SERVIZIO LOCALE e contesto utente locale sulla console MMC. Il certificato si trova in localMachine - Cartella personale
- Le autorizzazioni Same Read vengono fornite alla cartella machinekeys in "C: \ Documents and Settings \ All Users \ Dati applicazioni \ Microsoft \ Crypto \ RSA \ MachineKeys".
Ho controllato le risposte alle pagine seguenti, ma assolutamente nessuno di loro ha lavorato per me:
- Stack Overflow User @blowdart's answer
- MSDN Answer
- altri siti, ma che aveva a che fare con la creazione IIS e ottenere i certificati per lavorare lì
Sto eseguendo l'applicazione da Visual Studio o, e nel segmento di codice in alto, lancia l'eccezione cercando di impostare il
Cos'altro posso fare per farlo funzionare? (Ripensamento, ho anche provato l'autorizzazione "Everyone" sul cert e la cartella - anche questo ha gettato la stessa eccezione)