更新苹果APN推送证书后Parse Server推送失效且服务崩溃如何解决
问题根因
你遇到的报错是Node.js v17+默认使用OpenSSL 3.0版本,该版本禁用了部分老旧弱加密算法,刚好你新导出的APN p12证书使用了这些被禁用的算法,导致TLS安全上下文创建失败触发服务崩溃,你找到的对应issue完全匹配该问题。
M1芯片本身不会影响推送功能,是你新设备搭载的Monterey系统在导出p12证书时默认使用的加密算法,刚好和Node v17的OpenSSL 3.0规则不兼容,和芯片架构无关。
解决方案
按落地优先级从高到低排列:
- 方案1:降级Node.js版本(生产环境最推荐)
Parse Server 4.2.0官方适配的Node版本为12.x、14.x、16.x LTS版本,你使用的Node 17属于非长期支持版本,本身不在兼容范围内。将服务器Node版本降级到16.x LTS版本,重启服务即可解决问题。 - 方案2:重新导出兼容格式的p12证书
你可以用openssl命令对现有证书做格式转换,适配OpenSSL 3.0规则:
执行命令:openssl pkcs12 -in ApplePush.p12 -nodes -legacy | openssl pkcs12 -export -legacy -out ApplePush_compat.p12
按提示输入原证书密码和新密码后,用新生成的ApplePush_compat.p12替换服务器上的旧证书即可。 - 方案3:临时启用OpenSSL旧算法支持(仅临时验证用)
启动服务时给Node添加启动参数,临时放开旧算法限制,原启动命令如果是node index.js,修改为:node --openssl-legacy-provider index.js
该方案仅适合临时验证问题,不建议在生产环境长期使用。
内容的提问来源于stack exchange,提问作者ashishn
相关产品推荐
相关产品推荐

