Domanda

Ho un determinato certificato installato sul mio server.Tale certificato ha date valide e sembra perfettamente valido nello snap-in MMC dei certificati di Windows.

Tuttavia, quando provo a leggere il certificato, per utilizzarlo in una HttpRequest, non riesco a trovarlo.Ecco il codice utilizzato:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx è il numero di serie;l'argomento true significa "solo certificati validi".La raccolta restituita è vuota.

La cosa strana è che se passo false, che indica che i certificati non validi sono accettabili, la raccolta contiene un elemento: il certificato con il numero di serie specificato.

Insomma:il certificato sembra valido, ma il Find il metodo lo considera non valido!Perché?

È stato utile?

Soluzione

Prova a verificare la catena di certificati utilizzando il file X509Catena classe.Questo può dirti esattamente perché il certificato non è considerato valido.

Come suggerito da erickson, il tuo X509Store potrebbe non avere il certificato attendibile della CA nella catena.Se hai utilizzato OpenSSL o un altro strumento per generare la tua CA autofirmata, devi aggiungere il certificato pubblico per tale CA a X509Store.

Altri suggerimenti

Il certificato dell'emittente è presente nell'X509Store?Un certificato è valido solo se è firmato da qualcuno di cui ti fidi.

È un certificato di una vera CA o uno che hai firmato tu stesso?Gli strumenti di firma dei certificati spesso utilizzati dagli sviluppatori, come OpenSSL, non aggiungono alcune estensioni importanti per impostazione predefinita.

Credo che i certificati x509 siano legati a un particolare utente.Potrebbe non essere valido perché nel codice si accede come utente diverso da quello per cui è stato creato?

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