在 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 是不是分别表示基于令牌和证书的身份验证?的主要内容,如果未能解决你的问题,请参考以下文章