【问题标题】:Apple Push Notifications - The credentials supplied to the package were not recognizedApple 推送通知 - 提供给包裹的凭据未被识别
【发布时间】: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 无法发送推送通知,这似乎很奇怪

【问题讨论】:

    标签: c# apple-push-notifications moonapns


    【解决方案1】:

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

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

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

    这可能与您的情况有关。

    【讨论】:

      【解决方案2】:

      我已经解决了这个问题。

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

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

      证书现在可以正常工作了

      【讨论】:

        【解决方案3】:

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

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

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-20
          • 1970-01-01
          • 2010-12-10
          • 2015-09-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多