Служба PushSharp APNS перестает работать после закрытия Windows

Я могу успешно отправлять уведомления на свое устройство iPhone с помощью Push Sharp через сервер APNS в песочнице, но у меня возникла проблема.

Я создал файлы .cer и .p12, а затем успешно установил их на свой компьютер для разработки Windows 8.

Я использовал это руководство по установке сертификатов на моем компьютере с Windows 8.

Вчера все работало нормально, и я успешно отправил уведомление. Я выключил свою систему, а затем на следующий день, когда я попытался запустить код, я получил следующее исключение:

сообщение было неожиданным или плохо отформатировано

Я пробовал другое решение, доступное в Google, но ничего не помогло. Затем я удаляю сертификаты со своей машины, а затем переустанавливаю их, и все снова начинает работать.

Чтобы сделать службу надежной, я выключил систему, чтобы проверить, не удается ли отправить уведомление, и да, снова происходит ошибка с тем же исключением.

Я снова удалил сертификаты и переустановил их, чтобы исправить проблему. Я не знаю, в чем проблема? что заставляет PUSHSharp прекращать отправку уведомлений после выключения.

Примечание. Брандмауэр Windows отключен. Есть идеи?


person muhammad kashif    schedule 28.11.2013    source источник


Ответы (3)


Я работаю с PushSharp последние несколько недель, и у меня не было этой проблемы. Однако моя среда - Windows 7. После того, как вы создали соответствующий сертификат push-уведомлений на портале программы для разработчиков iPhone, вы должны были загрузить файл с именем, например, apn_developer_identity.cer. Если вы еще этого не сделали, вам следует открыть/импортировать этот файл в Связку ключей, в раздел входа в систему.

Наконец, если вы отфильтруете связку ключей, чтобы отобразить сертификаты контейнера входа в систему, вы должны увидеть свой сертификат в списке. Разверните сертификат, и под ним/прикрепленным к нему должен быть ключ.

Щелкните правой кнопкой мыши или Ctrl+щелчок по соответствующему сертификату и выберите Экспорт. Связка ключей попросит вас выбрать пароль для экспорта. Выберите один и запомните его. У вас должен получиться файл .p12. Вам понадобится этот файл и пароль, который вы выбрали, чтобы использовать библиотеки уведомлений и отзывов здесь.

Открытый SSL

Вот как создать файл формата PKCS12 с помощью открытого ssl, вам понадобится ваш закрытый ключ разработчика (который можно экспортировать из цепочки для ключей) и CertificateSigningRequest??.certSigningRequest

  1. Преобразование apn_developer_identity.cer (формат der) в pem: openssl x509 -in apn_developer_identity.cer -inform DER -out apn_developer_identity.pem -outform PEM}

  2. Затем преобразуйте закрытый ключ p12 в pem (требуется ввод пароля минимум из 4 символов): openssl pkcs12 -nocerts -out private_dev_key.pem -in private_dev_key.p12

  3. (Необязательно): Если вы хотите удалить пароль из закрытого ключа: openssl rsa -out private_key_noenc.pem -in private_key.pem

  4. Возьмите сертификат и ключ (с паролем или без него) и создайте файл формата PKCS#12: openssl pkcs12 -export -in apn_developer_identity.pem -inkey private_key_noenc.pem -certfile CertificateSigningRequest??.certSigningRequest -name "apn_developer_identity" -out apn_developer_identity .p12

После того, как вы сгенерируете файл p12, используя эти шаги, вам не нужно будет привязывать его к консоли. Вам просто нужно будет внести изменения в свой код следующим образом:

 var appleCert = File.ReadAllBytes("C:/Certificate/aps_dev_identity.p12");

Надеюсь это поможет.

person Ankit    schedule 29.11.2013
comment
нужно проверить с моим разработчиком iPhone об этом. - person muhammad kashif; 02.12.2013
comment
Эта проблема связана с свойством SkilSsl в ApplePushChannelSettings.cs. При изменении этого свойства на true поток Ssl не создается в ApplePushChannel (см. строку 516 в ApplePushChannel.cs). Я не знаю, что происходит не так при создании защищенного потока, не могли бы вы пролить свет на это? Кроме того, изменение SkilSsl на true устранило проблему, но при запуске службы обратной связи возникает следующее исключение: сообщение было неожиданным или плохо отформатировано. Не могли бы вы объяснить немного больше? - person muhammad kashif; 06.01.2014

Я работаю над MOON APNS с 2012 года, и он работает нормально, но в последние несколько дней я получаю сообщение об ошибке ниже.

Сообщение об ошибке: System.Security.Authentication.AuthenticationException: не удалось выполнить вызов SSPI, см. внутреннее исключение.

System.ComponentModel.Win32Exception: полученное сообщение было неожиданным или неправильно отформатировано

Решение: в файле PushNotification.cs заменить

_apnsStream.AuthenticateAsClient(host, certificates, System.Security.Authentication.SslProtocols.Ssl3, false);

с участием

_apnsStream.AuthenticateAsClient(host, certificates, System.Security.Authentication.SslProtocols.Tls, false);

Поскольку я не нашел подтверждения со стороны Apple, но на github.com я нашел решение для этого, и оно работает для нас.

Кажется, что Apple осуждает «небезопасный» протокол SSL.

person Rachit Patel    schedule 14.10.2014

Сначала проверьте, можете ли вы делать уведомления с кодом C#, например этим, а затем беспокойтесь об установке. У меня было такое же сообщение, когда я пытался выполнить код, я не заботился об установке и решил это, убедившись, что я использую сертификат типа .p12, а не .pem, и чтобы убедиться, что .p12 был пароль. Теперь я могу отправлять уведомления на свой iPhone из консольного приложения C# на моем компьютере.

person user1019042    schedule 01.10.2016