SslStream su TCP Server non riesce a convalidare il certificato client con RemoteCertificateNotAvailable

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

Domanda

Questa domanda riguarda la risoluzione di un errore SslPolicyError.RemoteCertificateNotAvailable .

Ho sviluppato un server TCP con SSLStream e un client TCP per l'altra estremità.

Autentico il server con:

sslStream.BeginAuthenticateAsServer 

Autentico il client con:

sslStream.BeginAuthenticateAsClient

Sto caricando il mio certificato cliente da Trusted Publishers - Local Machine .

Entrambi sono in esecuzione sullo stesso computer.

Ho provato a caricare il certificato client dai file .cer e .pfx anziché dall'archivio di editori attendibili. Ma il callback del validatore del certificato client (remoto) del server fallisce trovando che SslPolicyErrors ha un errore RemoteCertificateNotAvailable .

È stato utile?

Soluzione

Il collegamento non è stato trovato, ma c'è un problema che posso individuare con la dichiarazione:

" Ho caricato il mio certificato cliente da Trusted Publishers "

I certificati client in genere risiedono in un archivio personale per un account utente. Lo stesso vale per i certificati Server (probabilmente avranno un OID Scopo previsto diverso associato a loro, sebbene - "Autenticazione client" e "Autenticazione server"). Penso che sarebbe strano avere un certificato con una chiave privata disponibile nel negozio Trusted Publishers, credo.

Se fai doppio clic su un certificato client o server in CertMgr.msc, dovresti visualizzare un " Questo certificato ha una chiave privata " messaggio verso il basso.

In caso contrario, hai solo mezza coppia di chiavi: la crittografia e l'autenticazione richiedono la chiave privata. Il certificato server richiede una chiave privata all'estremità del server e il certificato client richiede una chiave privata all'estremità del client.

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