APNs USERTrust RSA证书更新处理
问题陈述
苹果官方宣布将更新 APNs 推送服务的 TLS 证书,采用新签发的 USERTrust RSA 认证机构证书,时间点为:
- 沙盒环境:2025年1月20日
- 生产环境:2025年2月24日
企业分发应用(Enterprise Program)若使用 push token 方式发送推送通知,需进行兼容性验证:
- 客户端 App 是否需要更新?
- 推送服务器是否需要调整证书配置?
如未及时处理,2025年苹果更新证书后,推送服务器与 APNs 的 HTTPS 连接可能失败,导致推送功能中断。
解决方案及操作步骤
✅ 客户端应用(App 侧)
TIP
无需任何操作
使用 APNs token 认证(auth tokens)的 iOS 应用本身无需修改。新证书影响的是服务端与苹果服务器间通信,App 安装包无需更新。
✅ 推送服务器(服务端解决方案)
根据服务器环境选择操作方式:
方案1:使用托管推送服务(推荐)
WARNING
若使用 AWS SNS、Firebase Cloud Messaging 等第三方服务:
- 服务商通常自动管理证书
- 仍需联系服务商确认兼容性
例如 AWS SNS 官方文档确认会自动处理 APNs 证书变更。
bash
# 托管服务无需手动更新证书
方案2:自建Linux推送服务器
需将新证书添加到系统信任库:
bash
# 1. 下载新证书放入锚定目录
sudo cp USERTrust_RSACert.crt /etc/pki/ca-trust/source/anchors/
# 2. 更新信任库
sudo update-ca-trust
# 3. 重启推送服务(如PHP-FPM/Nginx)
sudo systemctl restart php-fpm.service
bash
# 1. 下载新证书放入指定目录
sudo cp USERTrust_RSACert.crt /usr/local/share/ca-certificates/
# 2. 更新信任库
sudo update-ca-certificates
# 3. 重启相关服务
sudo systemctl restart apache2
提示:
- 新证书需从苹果开发者网站下载
- 操作需在 2025年1月20日(沙盒)前 完成测试验证
- 生产环境需在 2025年2月24日前 完成部署
验证方法
执行以下命令检查系统是否已信任新证书:
bash
# 使用 curl 测试 APNs 连接(示例)
curl -vI https://api.sandbox.push.apple.com
# 输出中查找信任链信息
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: none
关键注意事项
开发语言无关性
无论使用 PHP(curl)、Node.js、Python 还是其他语言,只要调用 Linux 系统级的 HTTPS 库,均依赖系统的信任库证书配置。证书双重验证
需验证沙盒和生产环境证书是否均支持:
bash
# 检查沙盒证书
openssl s_client -connect api.sandbox.push.apple.com:443 -servername api.sandbox.push.apple.com
# 检查生产证书
openssl s_client -connect api.push.apple.com:443 -servername api.push.apple.com
- 企业开发特殊要求
苹果工程师强调:
证书安装方式因操作系统和推送框架而异,需服务器管理员配合排查。
建议提前进行兼容性测试,避免业务中断。
总结操作清单
角色 | 任务 | 紧急度 |
---|---|---|
客户端开发 | 确认使用 token 认证无需改动 | 低 |
后端运维 | 更新 Linux 信任库(非托管方案) | 高 |
架构师 | 验证第三方推送服务兼容性 | 中 |
测试团队 | 沙盒环境推送全链路测试 | 高 |