You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apnotic gem创建会话时遭遇OpenSSL错误求助

解决Apnotic连接Apple推送通知的OpenSSL错误

问题根源

你误用了Apnotic的参数:cert_path是用来加载PKCS12格式(.p12)证书的,而你手里的.p8文件是Apple生成的ECDSA私钥,需要用key参数传入而非cert_path,这才导致了OpenSSL的类型不匹配错误。

修正后的代码

把原来的connection方法替换为:

def connection
  @connection ||= Apnotic::Connection.new(
    key: StringIO.new(credentials.apns_key),
    team_id: credentials.team_id,
    key_id: credentials.key_id
  )
end

def credentials
  @credentials ||= Rails.application.credentials.ios
end

额外注意事项

  • 确保credentials.apns_key是完整的.p8私钥内容:包含-----BEGIN PRIVATE KEY-----开头、-----END PRIVATE KEY-----结尾,以及中间所有换行符。在Rails credentials的yml文件中存储时,要用多行字符串格式(比如用|包裹)避免换行符丢失:
    ios:
      apns_key: |
        -----BEGIN PRIVATE KEY-----
        你的私钥内容行1
        你的私钥内容行2
        ...
        -----END PRIVATE KEY-----
      team_id: 你的TeamID
      key_id: 你的KeyID
    
  • 不需要额外公钥,Apple推送服务会通过你的TeamID和KeyID验证私钥合法性,从Apple获取的.p8私钥已足够。

内容的提问来源于stack exchange,提问作者Steve Schwedt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:54:54