Domanda

Sto cercando di capire se esiste un modo per fare in modo che un client .NET utilizzi un certificato client senza coinvolgere in alcun modo il keystore di Windows.

Ho un frammento di codice come questo:

test1.Service s = new test1.Service();
X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem");
s.ClientCertificates.Add(c);
int result = s.TestMethod();

Tuttavia, questo funziona solo se ho anche il certificato indicato in " test.pem " installato nel mio archivio certificati. Presumo che ciò sia dovuto al fatto che la chiave è necessaria per la negoziazione. Se non ho il certificato / chiave nel negozio, il certificato non viene inviato con la richiesta.

Quello che voglio fare è essere in grado di fornire sia il certificato che la chiave privata da uno o più file e non coinvolgere in alcun modo l'archivio certificati di Windows.

C'è un modo per farlo?

È stato utile?

Soluzione

Pubblicherò una risposta al mio post, ma lo lascerò aperto per vedere se altri possono risolverlo in modo diverso.

Fondamentalmente, sto puntando. Se hai un file PKCS12 (con sia key che cert in esso) puoi usare la classe X509Certificate2 per caricare quel file e usarlo, e non interrogherà il keystore.

Non sono riuscito a trovare un modo per farlo con chiavi PEM piatte e file cert (come quello di cui avresti bisogno con Python, per esempio).

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