2012-04-13 53 views
1

的Rails:3.0.5 红宝石:1.9.2 apn_on_rails:0.5.1apn_on_rails突然抛出SSLV3警告证书被吊销

突然开始收到异常:从apn_on_rails宝石 “撤销SSLV3警报证书”。然而,通知还发送到设备和证书有效期至2013年

重现:

  1. 轨控制台。
  2. 通知其中一个现有设备。

    NOT1 = APN :: Notification.create(:DEVICE_ID =>设备[0] .ID,:声音=>真,:徽章=> 1,:警报=> “测试”)

  3. 执行APN::App.send_notifications。 (注:APN :: Notification.send_notifications完全不发送任何通知,并依次调用APN :: App.send_notifications)

预期输出:通知发送到设备。抛出异常。

实际输出:通知发送到设备。抛出异常。下面例外的完整堆栈跟踪:

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' 

回答

1

为堆栈跟踪表明 - 这个问题是内/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?)的代码检查全局证书,是否已经定义了这个与否,它将检查“配置/ apple_push_develpment_certification.pem”并用此证书发送通知。

就我而言,我有这个文件“配置/ apple_push_develpment_certification.pem”我也添加两个不同的证书为我的iPhone和iPad应用程序由两个configatron定义的变量。因此我遇到了证书吊销问题,并且我的通知也被发送到设备。

要解决这个问题: 定义“configatron.apn.cert”指在development.rb新的证书和文件production.rb