NodeJS APN模块在Ubuntu上找不到证书文件

时间:2012-06-09 18:17:35

标签: node.js ubuntu ssl apple-push-notifications

我正在使用apn模块(https://github.com/argon/node-apn)从NodeJS向iPhone发送推送通知。

我的代码在我的开发机器(Mac OSX)上工作正常,并且通过Apple沙盒网关(gateway.sandbox.push.apple.com)成功推送通知,但当我将其移动到登台服务器(正在运行)时Ubuntu)推送通知失败,显示消息:

 Error: ENOENT, no such file or directory 'apns-dev-cert.pem'

我正在设置NodeJS apn对象:

var options = {
    cert: "apns-dev-cert.pem",          
    key:  "apns-key.pem",               
    passphrase: null,   
    gateway: "gateway.sandbox.push.apple.com",              
    port: 2195,                         
    enhanced: true,                     
    errorCallback: undefined,                       
    cacheLength: 5                                  
};

在我的开发Mac OSX计算机上,证书安装在Keychain中。根据我对Ubuntu的有限理解,相当于将cert文件复制到/ etc / ssl / certs。我尝试这样做,并在我的NodeJS代码中将路径更改为“/etc/ssl/certs/apn-dev-cert.pem”,但显示相同的错误消息。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我一直在努力解决这个问题,直到我意识到我还没有理解fs模块如何读取文件。显然,它从您启动节点进程的目录中读取它们。因此,.pem文件的路径应该与您正在执行此操作的位置相关。

您可能也想check out __dirname,可能会make it easier to specify your paths

答案 1 :(得分:0)

您尝试设置如下:

var options = {
    //cert: "apns-dev-cert.pem",          
    //key:  "apns-key.pem",               
    pfx: '<path>/apns-key.pem',    
    passphrase: null,   
    gateway: "gateway.sandbox.push.apple.com",              
    port: 2195,                         
    enhanced: true,                     
    errorCallback: undefined,                       
    cacheLength: 5                                  
};