Come specificare accettati i certificati per l'Autenticazione del Client in .NET SslStream

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

  •  09-06-2019
  •  | 
  •  

Domanda

Sto tentando di utilizzare .Net System.Di sicurezza.SslStream di processo lato server di un SSL/TLS stream con l'autenticazione del client.

Per eseguire la stretta di mano, sto usando questo codice:

SslStream sslStream = new SslStream(innerStream, false, RemoteCertificateValidation, LocalCertificateSelectionCallback);
sslStream.AuthenticateAsServer(serverCertificate, true, SslProtocols.Default, false);

Purtroppo, questo si traduce in SslStream la trasmissione di un CertificateRequest contenente il subjectnames di tutti i certificati nel mio CryptoAPI di Fiducia Archivio Principale.

Vorrei essere in grado di eseguire l'override di questo.Non è un'opzione per me, che richiede all'utente di installare o rimuovere certificati dall'Archivio Principale Attendibile.

Sembra che la SslStream utilizza SSPI/SecureChannel sotto, così se qualcuno sa come fare la stessa cosa con delle API, che sarebbe utile, anche.

Tutte le idee?

È stato utile?

Soluzione

Non guardare come è attualmente possibile con l' .NET librerie.

Ho risolto utilizzando il Mono libreria di classi di implementazione del Sistema.Di sicurezza.SslStream, che dà un migliore accesso a sovrascrivere il server di comportamento durante la stretta di mano.

Altri suggerimenti

Ciò che il certificato di convalida è la convalida di tutti i certificati della catena.Per davvero fare ciò, è sufficiente contattare l'archivio principale di ciascuna di quelle cerficates.

Se questo non è qualcosa che si vuole che accada è possibile distribuire il proprio archivio principale a livello locale.

Non è la convalida di parte voglio cambiare.Il problema è che in una prima stretta di mano, il server trasmette un messaggio che vi informa il cliente che è necessaria l'autenticazione client (che è il CertificateRequest messaggio).Come parte di questo messaggio, il server invia i nomi dei CAs, che accetta, in qualità di emittenti del certificato client.Non è che l'elenco di cui al default, che contiene tutte le Radici Attendibili in negozio.

Ma se è possibile sostituire il certificato root store per una singola applicazione, che sarebbe probabilmente risolvere il problema.Che cosa vuoi dire?E se sì, come faccio a fare che?

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