iOS推送通知不能用于分发

我已经尝试推送通知我的应用程序的开发,它工作正常。 当我生成生产(发行)的.p12文件时,它正在创build。 在服务器上部署.pem文件之后,它会抛出错误。

OpenSSL :: SSL :: SSLError(SSL_connect返回= 1 errno = 0状态= SSLv3读服务器操作票A:sslv3警报证书未知):“}

服务器:RoR(Ruby on Rails)任何帮助都是非常可观的。

注意: 对于开发.p12它工作正常。 问题是当我部署分布.p12。 请build议我可能错过了什么。

感谢致敬

@学习者

如果所有其他选项不起作用,那么你应该检查你是如何导出你的p12文件。 你应该导出与苹果生产证书相关联的p12文件,我希望它能工作..作为它为我工作!

检查你的服务器代码

gateway.push.apple.com,端口2195分发

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

  1. login到iPhone开发者计划门户。
  2. 从右侧的菜单中select应用程序ID。
  3. 创build一个没有通配符的应用程序ID。
  4. 点击此应用程序ID旁边的configuration链接,然后点击button启动向导以生成新的开发推送SSL证书。 (或)生成新的生产推送SSL证书进行分发。
  5. 下载此证书并双击aps_developer_identity.cer将其导入您的钥匙串
  6. 启动钥匙串助手,然后单击左侧的我的证书展开苹果开发推送服务,然后select苹果开发推送服务
  7. 右键单击并select“Export 1 elements …”并保存为apns-cert.p12。 和您的私钥放在同一个扩展区域右键单击并select“导出1个元素…”并保存为apns-key.p12。

8.Open Terminal并将目录更改为用于保存.p12的位置,并使用此命令将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密码一样的密钥。

最后四)。 cat apns-cert.pem apns-key-noenc.pem> apns-dev.pem。

现在你可以在ApnsPHP中使用这个PEM文件作为你的证书!

如果你想跳过validation,你可以使用这个。

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 

来源: 如何摆脱OpenSSL :: SSL :: SSLError

但是既然我们想要安全,你应该使用下面的内容

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

OmniAuth&Facebook的更多解决scheme:证书validation失败

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

谢谢 !!

我正在使用gem'rpush' ,它从凭证文件夹中取出pem文件并将其存储在数据库中。 我的解决scheme是从数据库中删除所有旧的Rpush :: Apns :: Applogging,并在更新我的凭证文件夹中的pem文件后重新生成logging。

 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!