使用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
相关产品推荐
相关产品推荐

