У меня странная проблема. Я пытаюсь подключиться к серверу Apple через TCP/SSL. Я использую клиентский сертификат, предоставленный Apple, для push-уведомлений. Я установил сертификат на свой сервер (Win2k3) как в папку «Локальные доверенные корневые сертификаты», так и в папку «Локальные личные сертификаты».
Теперь у меня есть библиотека классов, которая работает с этим соединением, когда я вызываю эту библиотеку классов из консольного приложения, работающего с сервера, она работает абсолютно нормально, но когда я вызываю эту библиотеку классов со страницы asp.net или веб-службы asmx, я получаю следующее исключение.
Не удалось выполнить вызов SSPI, см. внутреннее исключение. Полученное сообщение было неожиданным или неправильно отформатировано.
Это мой код:
X509Certificate cert = new X509Certificate(certificateLocation, certificatePassword);
X509CertificateCollection certCollection = new X509CertificateCollection(new X509Certificate[1] { cert });
// OPEN the new SSL Stream
SslStream ssl = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
ssl.AuthenticateAsClient(ipAddress, certCollection, SslProtocols.Default, false);
ssl.AuthenticateAsClient
- это место, где возникает ошибка.
Это сводит меня с ума. Если консольное приложение может нормально подключаться, должна быть какая-то проблема с безопасностью сетевого уровня asp.net, которая не проходит аутентификацию... не уверен, возможно, нужно добавить что-то или какую-то политику безопасности в web.config. Также просто хочу отметить, что я могу нормально подключаться к моей локальной машине разработки как с консолью, так и с веб-сайтом.
У кого-нибудь есть идеи?