在 APNs 的上下文中,p8 和 p12 是不是分别表示基于令牌和证书的身份验证?

Posted

技术标签:

【中文标题】在 APNs 的上下文中,p8 和 p12 是不是分别表示基于令牌和证书的身份验证?【英文标题】:In the context of APNs, does p8 and p12 mean token and certificate based authentication respectively?在 APNs 的上下文中,p8 和 p12 是否分别表示基于令牌和证书的身份验证? 【发布时间】:2017-09-12 09:53:53 【问题描述】:

据我所知,PKCS 8 常用于存储私钥,PKCS 12 常用于存储证书。

要与 APN 通信,您需要身份验证令牌或证书。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html

这是否意味着那些 .p8 文件是用于创建令牌的密钥,而那些 .p12 文件用作证书?

【问题讨论】:

【参考方案1】:

是的。 Apple Push Notification Authentication Key(P8 格式)用于生成服务器端令牌。您在这里不需要证书。 (这主要用于当您在同一帐户下有多个应用程序时,因为此密钥对于所有应用程序都相同,而不是证书)。因此,使用相同的连接,您的提供商可以使用强制“授权”标头与多个应用程序通信。此后,每个发布请求都会由 APNS 云使用此标头进行验证。

存在 P12 格式用于生成证书以针对特定 AppID 对提供者进行身份验证。在这里,对于每个单独的应用程序,都需要单独的证书。此处不需要“授权”标头,因为连接本身已经过身份验证。

希望对你有帮助。

【讨论】:

谢谢。所以现在我可以重用连接来向不同的应用程序发送通知。这就说得通了。唯一的问题是,他们为什么不一开始就这样设计呢。 是的。但它正在发展。以前每个主题都有证书,然后是多主题证书,然后是用于生产和开发的相同多主题证书,现在是相同的帐户 ID 密钥。 :)【参考方案2】:

.p8 是一个键

.p8 是一个身份验证令牌签名密钥,或者简称为key。您的服务器可以使用它来通过 APNs 进行身份验证。您可以使用它来创建 JWT 令牌(一些经过编码和签名的对象)并将其发送到 APNs 以进行身份​​验证。具体来说,您使用.p8 对 JWT 有效负载/令牌进行签名,并将此签名附加到 JWT,然后对其进行加密(Signed, then Encrypted)。在Communicate with APNs using authentication tokens 和Establishing a Token-Based Connection to APNs 中提供更多信息。 Communicating with APNs 中记录了您创建令牌的方式。例如,JWT 必须是加密的,并且必须少于 1 小时。它提供对所有应用程序的访问,因此您必须使用apns-topic 请求标头来指定应用程序。

.p12 是证书

.p12 是一个证书。如果您的系统安装了此证书,它可以使用 TLS 并识别您的身份,因此不需要进一步的身份验证。更多信息请访问Communicate with APNs using a TLS certificate。它提供对一个应用程序的访问。

一个好的资源是 Communicating with APNs。


这是否意味着那些 .p8 文件是用于创建令牌的密钥,

是的

那些 .p12 文件被用作证书?

是的

【讨论】:

以上是关于在 APNs 的上下文中,p8 和 p12 是不是分别表示基于令牌和证书的身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

将 APNs 证书导出为 p12 文件

APNS 生成证书 p12 或者 PEM

将 p12 APNS 证书转换为 base64 字符串

ios APNS 令牌对 P8 密钥无效

带有 p8 文件的 Apple 推送通知在我的 Mac 上工作,但在 Linux 服务器上不起作用

mac无法导出p12证书问题