Push-уведомления iOS не работают для распространения - PullRequest
5 голосов
/ 29 марта 2012

Я попробовал Push-уведомление для своего приложения для разработки, и оно работает нормально.Когда я создаю файл .p12 производства (распространения), он создается.После развертывания .pem-файла на сервере он выдает и выдает ошибку.

OpenSSL :: SSL :: SSLError (возвращено SSL_connect = 1 errno = 0 состояние = SSLv3 чтение билета запроса A: сертификат оповещения sslv3неизвестно): "}

Сервер: RoR (Ruby on Rails) Любая помощь будет очень полезной.

Примечание: Дляразработка .p12 работает нормально. Проблема в том, когда я развертываю дистрибутив .p12. Пожалуйста, предложите, что мне не хватает.

Спасибо и С уважением

Ответы [ 5 ]

7 голосов
/ 06 апреля 2012

отметьте это в своем коде сервера

gateway.push.apple.com, порт 2195 для распространения

gateway.sandbox.push.apple.com, порт 2195

  1. Войдите на портал программы для разработчиков iPhone.
  2. Выберите идентификаторы приложений в меню справа.
  3. Создание идентификатора приложения без подстановочного знака.
  4. Нажмите ссылку Настроить рядом с этим идентификатором приложения, а затем нажмите кнопку, чтобы запустить мастер для создания нового SSL-сертификата разработки Push. для разработки (или) создания нового SSL-сертификата Production Push для распространения.
  5. Загрузите этот сертификат и дважды щелкните aps_developer_identity.cer, чтобы импортировать его в свою цепочку для ключей
  6. Запустите помощник по связке ключей и нажмите «Мои сертификаты» слева Разверните Apple Development Push Services и выберите Apple Development Push Services
  7. Щелкните правой кнопкой мыши и выберите «Экспортировать 1 элемент ...» и сохраните как apns-cert.p12. И ваш закрытый ключ в той же области расширения Щелкните правой кнопкой мыши и выберите «Экспортировать 1 элемент ...» и сохраните как apns-key.p12.

8.Откройте Терминал и измените каталог на каталог, используемый для сохранения .p12 и преобразуйте пакет сертификатов PKCS12 в формат PEM с помощью этой команды

я). openssl pkcs12 -clcerts -nokeys -out apns-cert.pem -in apns-cert.p12 II). openssl pkcs12 -nocerts -out apns-key.pem -in apns-key.p12 здесь вам нужно дать ключ для доступа к php-коду.

Удалить кодовую фразу

Ш). openssl rsa -in apns-key.pem -out apns-key-noenc.pem здесь вы должны дать тот же ключ для удаления пароля.

наконец IV). cat apns-cert.pem apns-key-noenc.pem> apns-dev.pem.

Теперь вы можете использовать этот файл PEM в качестве сертификата в ApnsPHP!

3 голосов
/ 10 апреля 2012

@ Learner

Если все остальные параметры не работают, вам следует проверить, как экспортируется файл p12.Вы должны экспортировать файл p12, который связан с производственным сертификатом Apple, я надеюсь, он будет работать .. как он работал для меня !!!

1 голос
/ 05 апреля 2012

Если вы хотите пропустить проверку, вы можете использовать это.

   require 'net/http'
    require 'openssl'

    class Net::HTTP   alias_method :origConnect, :connect
        def connect
          @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
          origConnect
        end
    end

источник: Как избавиться от OpenSSL :: SSL :: SSLError

Но так как мы хотим быть в безопасности, вы должны использовать следующее

ENV['SSL_CERT_DIR'] = '/usr/share/ca-certificates/'

Другие решения на OmniAuth & Facebook: сбой проверки сертификата

0 голосов
/ 14 июня 2016

Я использовал gem 'rpush' , который взял файл pem из папки с учетными данными и сохранил его в базе данных.Мое решение состояло в том, чтобы удалить все старые записи Rpush :: Apns :: App из базы данных и восстановленные записи после обновления файла pem в моей папке учетных данных.

app = Rpush::Apns::App.new
app.name = "ios_app"
app.certificate = File.read("/path/to/sandbox.pem")
app.environment = "sandbox" # APNs environment.
app.password = "certificate password"
app.connections = 1
app.save!

n = Rpush::Apns::Notification.new
n.app = Rpush::Apns::App.find_by_name("ios_app")
n.device_token = "..." # 64-character hex string
n.alert = "hi mom!"
n.data = { foo: :bar }
n.save!
0 голосов
/ 10 апреля 2012

Я решил это. Это была ошибка файла .p12. Я не создавал .p12, который мне пришлось использовать.

Спасибо !!

...