Исключение SslStream.AuthenticateAsClient при использовании провайдера push-уведомлений Apple iPhone (apns-sharp) - PullRequest
2 голосов
/ 19 января 2010

Я получаю следующее исключение при использовании провайдера push-уведомлений Apple (apns-sharp).

Push-уведомления работают на моей машине для разработки, однако они не будут работать в хостинге Rackspace Cloud.У меня есть точная конфигурация Rackspace Cloud со средним уровнем доверия, работающая с моим разработчиком.машина, поэтому среднее доверие не может быть проблемой здесь.Кроме того, файл сертификата не может быть проблемой, поскольку он работает на моем dev.машина.

Есть идеи?

Обновление №1: Это как-то связано с корневым сервером Entrust, который может не находиться наСерверы Rackspace Cloud?Я проверил apns-sharp код, и похоже, что он игнорирует проверку сертификата, но я не уверен на 100%.

The credentials supplied to the package were not recognized    at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface SecModule, String package, CredentialUse intent, SecureCredential scc)
  at System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential& secureCredential)
  at System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint)
  at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output)
  at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count)
  at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
  at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
  at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
  at JdSoft.Apple.Apns.Notifications.NotificationConnection.OpenSslStream()
  at JdSoft.Apple.Apns.Notifications.NotificationConnection.Reconnect()
  at JdSoft.Apple.Apns.Notifications.NotificationConnection.workerMethod()

Ответы [ 4 ]

2 голосов
/ 19 января 2010
0 голосов
/ 31 января 2012

Для людей, которые продолжают получать это исключение:

У меня было то же исключение, и чтение обо всех процедурах и форумах в 'apns-sharp' не помогло.Все было хорошо при экспорте сертификата из MAC, моя проблема заключалась в том, что, поскольку я устанавливал сертификат на локальном компьютере с конфигурациями по умолчанию, этот сертификат не мог использоваться, поскольку privateKey не был импортирован.Затем, когда вы открываете новый сертификат для его установки, вы должны убедиться, что установили закрытый ключ.В коде у вас должно быть что-то вроде:

new X509Certificate2(rawCertificateInBytes, Password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

Это решило мою проблему.

0 голосов
/ 21 апреля 2011

В моей ситуации эта проблема была связана с безопасностью Medium Trust на Rackspace Cloud Sites, которую мне не удалось устранить. Чтобы преодолеть эту проблему, я изменил дизайн, чтобы использовать PHP-код для доступа к APNS.

0 голосов
/ 22 января 2010

Следили ли вы за этой страницей: http://code.google.com/p/apns-sharp/wiki/HowToCreatePKCS12Certificate

Также вас может заинтересовать проверка последней версии apns-sharpРешено много проблем.

...