Невозможно отправить сертификат клиента через SslStreamC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно отправить сертификат клиента через SslStream

Сообщение Anonymous »

Я выполняю рукопожатие SSL3 с использованием SslStream, но, несмотря на все мои усилия, SslStream никогда не отправляет сертификат клиента от моего имени. Вот код:

Код: Выделить всё

SSLConnection = new System.Net.Security.SslStream(SSLInOutStream, false, new System.Net.Security.RemoteCertificateValidationCallback(AlwaysValidRemoteCertificate), new System.Net.Security.LocalCertificateSelectionCallback(ChooseLocalCertificate));

X509CertificateCollection CC = new X509CertificateCollection();
CC.Add(Org.BouncyCastle.Security.DotNetUtilities.ToX509Certificate(MyLocalCertificate));

SSLConnection.AuthenticateAsClient("test", CC, System.Security.Authentication.SslProtocols.Ssl3, false);
а затем у меня AlwaysValidRemoteCertificate просто возвращает true, а ChooseLocalCertificate возвращает нулевой элемент массива.

код, вероятно, выглядит немного странно, потому что проект немного странный, но я думаю, что это не имеет значения. SSL-квитирование завершено. Проблема в том, что вместо отправки сообщения сертификата от моего имени (в процессе установления связи) с сертификатом в кодировке ASN.1 (MyLocalCertificate) SslStream отправляет номер предупреждения SSL 41 (без сертификата), а затем продолжает работу. Я знаю это по анализу пакетов. После завершения рукопожатия SslStream помечает IsAuthenticated как true, IsMutuallyAuthenticated как false, а его член LocalCertificate имеет значение null.

Я чувствую, что, вероятно, упускаю что-то довольно очевидное. здесь, поэтому любые идеи будут оценены по достоинству. Я новичок в SSL, и этот проект находится в стороне от проторенных дорог, поэтому я в некоторой растерянности.

P.S. 1: Моя процедура ChooseLocalCertificate вызывается дважды во время рукопожатия и оба раза возвращает действительный (насколько я могу судить) ненулевой сертификат.

P.S. 2: SSLInOutStream — это мой собственный класс, а не NetworkStream. Однако, как я уже сказал, рукопожатие происходит в основном нормально, поэтому я сомневаюсь, что это виновник... но кто знает?

Подробнее здесь: https://stackoverflow.com/questions/293 ... -sslstream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»