5

我试过推送通知为我的应用程序的开发,它工作正常。当我生成生产(分配)的.p12文件时,它正在创建。在服务器上部署.pem文件之后,它会抛出并出错。iOS推送通知不适用于分配

的OpenSSL :: SSL :: SSLError(所以SSL_connect返回= 1个错误号= 0状态= SSLv3的读取服务器S 分裂国家车票答:SSLV3警报证书未知):”}

服务器:回报率(红宝石on Rails的) 任何帮助将是非常可观的

注意:。对于发展.P12它的正常工作的问题是,当我部署分布的.p12请有什么建议可我会丢失

感谢和问候

回答

3

@Learner

如果所有其他选项都没有,那么工作,你应该检查你如何导出您的P12文件。您应该导出与Apple生产证书关联的p12文件,我希望它能正常工作。

1

如果你想跳过验证,你可以使用它。

require 'net/http' 
    require 'openssl' 

    class Net::HTTP alias_method :origConnect, :connect 
     def connect 
      @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE 
      origConnect 
     end 
    end 

来源:How to get rid of OpenSSL::SSL::SSLError

但是因为我们希望是安全的,你应该使用遵循

ENV['SSL_CERT_DIR'] = '/usr/share/ca-certificates/'

更多的解决方案在OmniAuth & Facebook: certificate verify failed

7

检查这在您的服务器代码

gateway.push.apple.com,分配

gateway.sandbox.push.apple.com端口2195,端口2195

  1. 登录-到iPhone开发人员计划门户。
  2. 从右侧菜单中选择应用程序ID。
  3. 创建不带通配符的应用程序ID。
  4. 单击此App ID旁边的配置链接,然后单击该按钮启动向导以生成新的开发推送SSL证书。 (或)生成新的生产推送SSL证书进行分发。
  5. 下载该证书并双击aps_developer_identity.cer将其导入到你的钥匙串
  6. 启动钥匙扣助理,然后点击我的证书上留下 展开苹果开发推送服务,并选择苹果开发推送服务
  7. 右对齐点击并选择“Export 1 elements ...”并保存为apns-cert.p12。 与您的私钥放在同一个扩展区域 右键单击并选择“导出1个元素...”并保存为apns-key.p12。

8.Open终端和目录更改为用于保存的.p12和使用该命令

i)所述PKCS12证书束转换成PEM格式位置。openssl pkcs12 -clcerts -nokeys -out apns-cert.pem -in apns-cert.p12 ii)。 openssl pkcs12 -nocerts -out apns-key.pem -in apns-key.p12 这里你必须提供一些进入php代码的密钥。

删除密码

iii)。 openssl rsa -in apns-key.pem -out apns-key -noenc.pem 这里你必须为Remove口令提供相同的密钥。

终于 iv)。 cat apns-cert.pem apns-key-noenc.pem> apns-dev.pem。

现在您可以在ApnsPHP中使用此PEM文件作为您的证书!

0

我解决了它。这是一个.p12文件错误。我没有创建我必须使用的.p12。

谢谢!

0

我正在使用gem'rpush',它将凭证文件夹&中的pem文件存储在数据库中。我的解决方案是从数据库中删除所有旧的Rpush :: Apns :: App记录,并在更新我的凭证文件夹中的pem文件后重新生成记录。

app = Rpush::Apns::App.new 
app.name = "ios_app" 
app.certificate = File.read("/path/to/sandbox.pem") 
app.environment = "sandbox" # APNs environment. 
app.password = "certificate password" 
app.connections = 1 
app.save! 

n = Rpush::Apns::Notification.new 
n.app = Rpush::Apns::App.find_by_name("ios_app") 
n.device_token = "..." # 64-character hex string 
n.alert = "hi mom!" 
n.data = { foo: :bar } 
n.save!