Domanda

Ho dei problemi con l'importazione e l'accesso a una chiave privata con l'utente ASPNET. So che quando si importa manualmente una chiave privata (file .pfx), in Windows, si ottiene un'opzione per contrassegnare la chiave come esportabile. Ora, per quanto ne so, è necessario per recuperare quella chiave privata in seguito.

Il mio problema è che sto importando la chiave privata nel codice, come utente ASPNET, e non sembra esserci un modo per contrassegnarlo come esportabile, come fa la procedura guidata di importazione del certificato di Windows. Per chiarire, l'importazione funziona bene, ma quando accedo ai dettagli sul certificato ora importato, non ci sono dati della chiave privata.

Questo è il codice che sto usando per importare il certificato, una volta che ho già aperto il file .pfx, con la password corretta.

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
    X509Store certStore = new X509Store(name, loc);
    StorePermission permission = new StorePermission(PermissionState.Unrestricted);
    permission.Flags = StorePermissionFlags.AddToStore;
    permission.Assert();
    certStore.Open(OpenFlags.ReadWrite);
    certStore.Add(cert);
    certStore.Close();
}

Sto confondendo le autorizzazioni o il modo in cui importare questa chiave privata? O sto andando in questo modo completamente nel modo sbagliato?

È stato utile?

Soluzione

Credo che sia necessario impostare il flag X509KeyStorageFlags.Exportable quando si importa il certificato. Non mostri quel codice, ma c'è un sovraccarico del metodo Import con questa firma:

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

o questo:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

Che ti permetterà di impostarlo prima dell'importazione. Altrimenti, tutto sembra a posto!

Richard

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