2016-11-19 12 views
3

私のレールアプリケーションからプッシュ通知を送信しようとすると、これが表示されます。私は、コマンドAppleプッシュ通知/ 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' 

とデバイストークンとの.pemファイルが有効であることを確認しましたこのエラーメッセージは何が起こっているかを把握することはできません、非常に曖昧です。

+1

関連する[gateway.sandbox.push.apple.comへの接続時に["verify error:num = 20"(http://stackoverflow.com/a/23351633/608639)を参照してください。問題はクライアント証明書に関連している可能性があります。証明書と秘密鍵はどちらも 'aps_development.pem'という名前になっていますか? – jww

+1

これは、私がコマンドラインからopenslを使用する場合に問題を解決しましたが、私はopensslを使用するgem(ヒューストン)を使用しており、問題は解決しません。何か案は? – blee908

+0

申し訳ありませんが、私はRubyについて知らないです。私はずっと前にそれをあきらめました。 TLS 1.0にプロトコルを設定したり、SNIのサーバー名を設定するなど、単純なセキュリティ関連のタスクを実行するのは非常に困難です。 GemがTLS 1.0以上を使用していること、サーバーナンバーインジケーション(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の証明書を更新するだけでよいはずです。

その他の注意:-CApathまたは-CAfileを追加する(またはそのパスをENVに渡す)必要があると思われる場合は、おそらく誤解を招く恐れのあるコマンドがあります。

このヘルプが必要です。私はこの問題をソートするのにほぼ一週間くらいかかりました。

関連する問題