gpt4 book ai didi

node.js - APN Node : Error when loading PEM file

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:26 24 4
gpt4 key购买 nike

我正在尝试获取 apn-node推送到我的设备。服务器托管在 Heroku 上,所以我不想提交文件。另外,我不想从远程服务器获取它,而是将它放在环境变量中。

我已经尝试了以下 ( source ):
我从 Apple 创建并下载了证书,现在将它放在我的钥匙串(keychain)中。我将其导出为 *.p12 文件并使用 openssl pkcs12 -in dev.p12 -out dev.pem -nodes 将其转换为 *.pem 文件。

为了设置环境变量,我做了 export APN_CERT="$(cat dev.pem)"。当我在我的应用程序中打印出来时,它显示证书非常好。但是,当我实际发送通知(并且 node-apn 打开连接)时,它会抛出一个 [Error: wrong tag]
此错误由加密模块发出:

apn Raising error: +4ms [Error: wrong tag] undefined undefined
apn Error occurred with trace: +1ms Error: wrong tag
at Object.exports.createCredentials (crypto.js:176:17)
at Object.exports.connect (tls.js:1344:27)
at apnSocketLegacy

该模块还会抛出 APN 传输错误:moduleInitialisationFailed(代码:513)

除了这可能与 Node 本身的加密模块本身有关之外,我找不到任何有用的信息。这就是为什么我怀疑我在创建证书时做错了什么,但感谢您提供的任何指导性建议。

最佳答案

我找到了 this guide对于 apns-sharp,它实际上描述了如何生成有效的 .p12 文件。

不过,将其写入环境变量仍然无效。我的阅读代码是:new Buffer(certString, 'binary') 但我认为它仍然没有以正确的格式提供。

我的解决方案是通过 fs.readFileSync 直接从文件中实际读取缓冲区。


要使 env 变量起作用,您可以通过 cat cert.p12 | 对文件进行编码。 base64 并使用 new Buffer(certString, 'base64') 加载它。这最终对我有用。

关于node.js - APN Node : Error when loading PEM file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com