2012-04-13 79 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