2009-05-07 4 views
1

Wenn ich eine SslStream weise wie folgt zu erstellen:Verwendet SslStream LocalCertificateSelectionCallback, wenn es als Server fungiert?

secureStream = new SslStream(stream, true, tlsRemoteCallback, tlsLocalCallback); 

Und ich dann eine der AuthenticateAsServer oder BeginAuthenticateAsServer Methoden, ist es überhaupt möglich, dass die LocalCertificateSelectionCallback (tlsLocalCallback) aufgerufen werden? Und wenn ja, wie?

Ich habe den Eindruck, dies ist nicht möglich, weil die AuthenticateAsServer-Methode einen X509Certificate-Parameter erfordert. Und wenn Sie null übergeben, wird eine Ausnahme ausgelöst. Aber ich möchte sicher sein, da ich versuche, eine Socket-API für andere Entwickler in meinem Team zu schreiben.

Antwort

0

Versuchen Sie, secureStream auszuwählen, welches Zertifikat verwendet wird, um sich mit dem Client zu authentifizieren?

Ich glaube nicht, dass das möglich ist. Bei einigen Reflektionen sehe ich, dass das Delegate Ultimate in System.Net.Security.SecureChannel zu einem "m_CertSelectionDelegate" geht. Eine schnelle Analyse dieser Variable scheint darauf hinzuweisen, dass sie nur dazu dient, ein Server-Zertifikat zu verifizieren oder das Zertifikat zu verifizieren, das der Client sich selbst gegenseitig authentifiziert.

Verwandte Themen