Ruby on rails 3 apn_on_rails突然抛出sslv3警报证书吊销

Ruby on rails 3 apn_on_rails突然抛出sslv3警报证书吊销,ruby-on-rails-3,apple-push-notifications,Ruby On Rails 3,Apple Push Notifications,轨道:3.0.5 Ruby:1.9.2 apn_on_轨道:0.5.1 突然开始接收来自apn_on_rails gem的异常:“sslv3警报证书已吊销”。但是,通知仍会发送到设备,证书有效期至2013年 复制: rails控制台 创建对现有设备之一的通知 not1=APN::Notification.create(:device_id=>devices[0].id,:sound=>true,:badge=>1,:alert=>Testing) 执行APN::App.send_通知。(注意:A

轨道:3.0.5 Ruby:1.9.2 apn_on_轨道:0.5.1

突然开始接收来自apn_on_rails gem的异常:“sslv3警报证书已吊销”。但是,通知仍会发送到设备,证书有效期至2013年

复制:

  • rails控制台
  • 创建对现有设备之一的通知

    not1=APN::Notification.create(:device_id=>devices[0].id,:sound=>true,:badge=>1,:alert=>Testing)

  • 执行APN::App.send_通知。(注意:APN::Notification.send_通知根本不发送任何通知,而是调用APN::App.send_通知)

  • 预期输出:要发送到设备的通知。没有引发异常

    实际输出:发送到设备的通知。引发异常。以下异常的完整堆栈跟踪:

    ruby-1.9.2-p0 > APN::App.send_notifications
    SSL_connect returned=1 errno=0 state=SSLv3 read finished A: sslv3 alert certificate revoked
    OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read finished A: sslv3 alert certificate revoked
        from /gems/apn_on_rails-0.5.1/lib/apn_on_rails/libs/connection.rb:59:in `connect'
        from /gems/apn_on_rails-0.5.1/lib/apn_on_rails/libs/connection.rb:59:in `open'
        from /gems/apn_on_rails-0.5.1/lib/apn_on_rails/libs/connection.rb:23:in `open_for_delivery'
        from /gems/apn_on_rails-0.5.1/lib/apn_on_rails/app/models/apn/app.rb:48:in `send_notifications_for_cert'
        from /gems/apn_on_rails-0.5.1/lib/apn_on_rails/app/models/apn/app.rb:36:in `send_notifications'
    

    正如堆栈跟踪所示,问题出现在/gems/apn_on_rails-0.5.1/lib/apn_on_rails/app/models/apn/app.rb中

    在App.rb的方法self.send_notifications方法中:

    def self.send_notifications
        apps = APN::App.all
        apps.each do |app|
          app.send_notifications
        end
        if !configatron.apn.cert.blank?
          global_cert = File.read(configatron.apn.cert)
          send_notifications_for_cert(global_cert, nil)
        end
    end
    
    注意:(
    if!configatron.apn.cert.blank?
    )该代码检查全局证书,无论您是否定义了该证书,它都将检查“config/apple\u push\u develpment\u certification.pem”,并使用该证书发送通知

    在我的例子中,我有一个文件“config/apple\u push\u develpment\u certification.pem”,我还为我的iPhone和iPad应用程序添加了两个不同的证书,它们由两个configatron变量定义。因此,我遇到了证书吊销问题,并且我的通知已发送到设备

    要解决此问题,请执行以下操作:
    定义“configatron.apn.cert”以指向development.rb和production.rb文件中的新证书

    ,如堆栈跟踪所示-问题出现在/gems/apn_on_rails-0.5.1/lib/apn_on_rails/app/models/apn/app.rb中

    在App.rb的方法self.send_notifications方法中:

    def self.send_notifications
        apps = APN::App.all
        apps.each do |app|
          app.send_notifications
        end
        if !configatron.apn.cert.blank?
          global_cert = File.read(configatron.apn.cert)
          send_notifications_for_cert(global_cert, nil)
        end
    end
    
    注意:(
    if!configatron.apn.cert.blank?
    )该代码检查全局证书,无论您是否定义了该证书,它都将检查“config/apple\u push\u develpment\u certification.pem”,并使用该证书发送通知

    在我的例子中,我有一个文件“config/apple\u push\u develpment\u certification.pem”,我还为我的iPhone和iPad应用程序添加了两个不同的证书,它们由两个configatron变量定义。因此,我遇到了证书吊销问题,并且我的通知已发送到设备

    要解决此问题,请执行以下操作: 定义“configatron.apn.cert”以指向development.rb和production.rb文件中的新证书