2016-11-19 3 views
3

При попытке отправить push-уведомление из моего приложения rails я получаю это. Я убедился, что маркер устройства и .pem файл действительны с командойApple Push Notification/Ruby OpenSSL Ошибка

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert aps_development.pem -key aps_development.pem

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read finished A: tlsv1 alert internal error 
    from /Library/Ruby/Gems/2.0.0/gems/houston-2.2.3/lib/houston/connection.rb:44:in `connect' 
    from /Library/Ruby/Gems/2.0.0/gems/houston-2.2.3/lib/houston/connection.rb:44:in `open' 
    from /Library/Ruby/Gems/2.0.0/gems/houston-2.2.3/lib/houston/connection.rb:19:in `open' 
    from /Library/Ruby/Gems/2.0.0/gems/houston-2.2.3/lib/houston/client.rb:40:in `push' 

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

+1

См. ["Проверить ошибку: num = 20" при подключении к gateway.sandbox.push.apple.com] (http://stackoverflow.com/a/23351633/608639). Вероятно, ваша проблема связана с сертификатом клиента. Как это называется сертификатом и закрытым ключом под именем aps_development.pem? – jww

+1

Это решило проблему, если я буду использовать open openssl через командную строку, но я использую драгоценный камень (Хьюстон), который использует openssl, и проблема все еще сохраняется. Есть идеи? – blee908

+0

Извините, я не знаю о Ruby. Я сдался на это давно. Слишком сложно выполнить простые задачи, связанные с безопасностью, например, установить версию протокола для TLS 1.0 или задать имя сервера для SNI. Можете ли вы проверить, что ваш Gem использует TLS 1.0 или выше, он использует Server Nam Indication (SNI), и он использует сертификат клиента? Wireshark сможет рассказать, потому что они доступны в 'ClientHello', прежде чем шифрование начнется. – jww

ответ

1

при получении этой ошибки OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read finished A: tlsv1 alert internal error это означает, что с вашим сертификатом что-то не так. либо срок действия сертификата, либо пароль.

Просто обновите сертификат Apple Push Notification, и вам должно быть хорошо.

Дополнительные примечания: openssl команды ничего не говорят об этом, если вы столкнулись с тем, что вам нужно добавить -CApath или -CAfile (или передать эти пути ENV), которые, вероятно, вводят в заблуждение.

Надеюсь, что эта помощь. Я занимаюсь почти неделю, чтобы разобраться в этой проблеме.

Смежные вопросы