Ho generato una CA e più certificati (firmati da CA) utilizzando OpenSSL e ho un client/server .NET/C# entrambi utilizzando SslStream
ciascuno con i propri certificati/chiavi, l'autenticazione reciproca è abilitata e la revoca è disabilitata.Verifica server remoto X509Certificato utilizzando il file certificato CA
Sto usando RemoteCertificateValidationCallback
per SslStream
per convalidare il certificato del server remoto e speravo di poter caricare il certificato pubblico della CA (come un file) nel programma e utilizzarlo per verificare il certificato remoto piuttosto che effettivamente l'installazione del CA nell'archivio certificati di Windows. Il problema è che il X509Chain
non mostrerà nient'altro a meno che non installi la CA nell'archivio, sia la shell di Windows CryptoAPI quando apro una versione PEM di uno dei certificati.
La mia domanda è, come posso verificare un certificato è stato firmato da mio specifico CA semplicemente utilizzando file del certificato pubblico della CA senza l'utilizzo di certificati di Windows o WCF quando RemoteCertificateValidationCallback
, X509Certificate
e X509Chain
non sembrano dare ho qualcosa con cui lavorare?
Non capisco perché l'aggiunta del certificato CA a Windows Store induca X509Chain a mostrarlo nella catena, ma se non lo faccio non ne fa parte. C'è qualcuno per aggiungere il certificato CA alla catena all'interno di RemoteCertificateValidationCallback? – user985122
Ancora non riesco a trovare una risposta a questa :( – user985122