2009-05-07 5 views
1

Si je crée une instance de SslStream comme ceci:SslStream utilise-t-il LocalCertificateSelectionCallback lorsqu'il agit en tant que serveur?

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

Et puis-je utiliser une des méthodes AuthenticateAsServer ou BeginAuthenticateAsServer, est-il possible pour l'être invoquée LocalCertificateSelectionCallback (tlsLocalCallback)? Et si oui, comment?

Je suis sous l'impression que ce n'est pas possible, car la méthode AuthenticateAsServer requiert un paramètre X509Certificate. Et si vous passez null, alors il jette une exception. Mais je veux être certain puisque j'essaye d'écrire une API de socket pour que d'autres développeurs de mon équipe puissent l'utiliser.

Répondre

0

Etes-vous en train d'essayer de faire en sorte que secureStream choisisse le certificat qu'il utilise pour s'authentifier auprès du client?

Je ne pense pas que ce soit possible. En faisant du Reflectoring, je vois que le délégué final va à un "m_CertSelectionDelegate" dans System.Net.Security.SecureChannel. Une analyse rapide de cette variable semble indiquer qu'elle ne sert qu'à vérifier un certificat de serveur ou à vérifier le certificat que le client donne pour s'authentifier mutuellement.

Questions connexes