私のレールアプリケーションからプッシュ通知を送信しようとすると、これが表示されます。私は、コマンド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ファイルが有効であることを確認しましたこのエラーメッセージは何が起こっているかを把握することはできません、非常に曖昧です。
関連する[gateway.sandbox.push.apple.comへの接続時に["verify error:num = 20"(http://stackoverflow.com/a/23351633/608639)を参照してください。問題はクライアント証明書に関連している可能性があります。証明書と秘密鍵はどちらも 'aps_development.pem'という名前になっていますか? – jww
これは、私がコマンドラインからopenslを使用する場合に問題を解決しましたが、私はopensslを使用するgem(ヒューストン)を使用しており、問題は解決しません。何か案は? – blee908
申し訳ありませんが、私はRubyについて知らないです。私はずっと前にそれをあきらめました。 TLS 1.0にプロトコルを設定したり、SNIのサーバー名を設定するなど、単純なセキュリティ関連のタスクを実行するのは非常に困難です。 GemがTLS 1.0以上を使用していること、サーバーナンバーインジケーション(SNI)を使用していること、およびクライアント証明書を使用していることを確認できますか? Wiresharkは、暗号化が始まる前に、 'ClientHello'で利用可能であることを知ることができます。 – jww