Я пытаюсь отправить уведомления на мой iPhone, что я успешно сделал с помощью PHP. Однако я не могу открыть сокет-соединение с push-серверами Apple с помощью C #. Я не думаю, что есть проблема с самим сертификатом, так как я могу успешно отправлять уведомления, используя этот код в PHP:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'cert.pem');
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
fwrite($fp, $msg);
Когда я пытаюсь пройти аутентификацию в C #, используя приведенный ниже код, Apple сразу закрывает соединение. Я получаю это исключение: «Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом».
sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Default, false);
Я в основном взял весь свой код из этого вопроса: C # iPhone push server?
Я подумал, что это может быть проблема с сертификатом, поскольку я не думаю, что C # позволяет вам просто загружать файлы .PEM программно. Я использовал OpenSSL для преобразования его в файл .PFX, но у меня все еще остается та же проблема.
Есть идеи, как решить эту проблему (возможный сертификат)?