Apple 推送通知 - 提供给包裹的凭据未被识别

Posted

技术标签:

【中文标题】Apple 推送通知 - 提供给包裹的凭据未被识别【英文标题】:Apple Push Notifications - The credentials supplied to the package were not recognized 【发布时间】:2018-03-12 21:15:38 【问题描述】:

我在尝试从 IIS 中的站点发送推送通知时收到“无法识别提供给包的凭据”消息。

我有一个控制台应用程序,它在服务器上运行完全相同的代码,运行良好,只是它来自 IIS。

我在这里尝试了解决方案: PushSharp - The credentials supplied to the package were not recognized

我试过了:

"C:\Program Files (x86)\Windows Resource Kits\Tools\winhttpcertcfg" -i certificate.p12 -c LOCAL_MACHINE\My -a "NetworkService" -p <Password>

这是运行 IIS 的帐户。我也尝试过 IIS_IUSRS、USERS 但我仍然收到凭据错误

我还检查了我只导出私钥而不是证书,我也尝试了两种方式

还有什么我可以尝试的吗?只有 IIS 无法发送推送通知,这似乎很奇怪

【问题讨论】:

【参考方案1】:

如果它在控制台中有效,但在服务中无效,那么可能是罪魁祸首之一:交互式会话。

出于安全原因,服务since Vista 在非交互式会话中运行。这意味着他们无法制作屏幕截图、覆盖 UAC 或以任何其他方式与用户桌面交互。

一些相当陈旧的代码也需要交互式会话。特别是 (t)rusty Office COM 互操作知道是否需要该权限,否则它将根本无法运行。

这可能与您的情况有关。

【讨论】:

【参考方案2】:

我已经解决了这个问题。

我将运行该站点的应用程序池的身份更改为我当前的用户(管理员)

为了确保我还为该用户运行了 winhttpcert,并且在 Cert 文件属性安全设置中,我将完全控制权授予了同一用户。

证书现在可以正常工作了

【讨论】:

【参考方案3】:

我在部署到 AWS Elastic Beanstalk 的 .NET Core Web 服务中遇到了同样的问题。我将概述我尝试过的所有内容以及我最终如何修复它。

    我按照您可以在任何地方找到的所有步骤来创建 APNS 生产证书。 已下载证书并安装到 Mac Keychain 应用程序中。 导出了带有私钥的证书,并提供了密钥的密码。 将导出的 .p12 文件复制到我的 PC 到 wwwroot 中的文件夹中 在我的 .NET Core Web 服务中,将此文件(提供密码)读入 X509 证书。 使用该证书通过 SslStream 调用苹果推送服务 我的本地 IIS 一切正常,但上传 AWS EB 后,我的手机不会收到通知。 我添加了日志记录,发现 sslStream.AuthenticateAsClient 方法会抛出“无法识别提供给包的凭据”异常 卡在这里很久了 我尝试记录 X509 对象的 Thumbprint 和 HasPrivateKey 属性,它们看起来都正确,所以我觉得证书读取正确。 我尝试将 Tls 版本设置为 Tls12 我尝试从证书的硬编码字节数组构建 x509。 接下来是在黑暗中拍摄。 我将 .p12 证书导入本地 PC。 我注意到信任链不完整,所以我从 Apple 下载了根证书和中间证书 我验证了证书显示它有一个私钥。 然后我从 Windows cert 应用程序中导出,包括私钥(注意:导入时请确保选中该框以允许导出私钥) 这是我注意到的地方。 首先导出要求您提供密码。我使用的和从 Mac 导出时一样。 然后导出要求您选择加密(下拉)。 Mac 没有问这个。我保留了默认值 (TripleDES-SHA1)。 它保存为 .pfx,据我了解,它与 .p12 相同,只是扩展名不同。 我将代码更改为使用 .pfx。 现在,当部署到 AWS 时,它可以工作了。 我不知道有什么不同,但我怀疑它可能与私钥的加密有关。

希望这会有所帮助。

【讨论】:

以上是关于Apple 推送通知 - 提供给包裹的凭据未被识别的主要内容,如果未能解决你的问题,请参考以下文章

提供给软件包的凭据未被识别(尽管开发工作正常)

由于应用程序/无效凭据错误,无法发送设备推送通知

如何作为 Apple 推送通知服务提供商获取设备令牌?

GCM for iOS 和 Apple 提供的推送通知服务有啥区别

Apple 推送通知如何在 iPhone 应用程序中传递给用户?

为 Apple 推送通知服务 (APNS) 设置 linux 提供程序