ios 扩展名为.p8的文件是什么?(APNs认证密钥/ JWT)

yquaqz18  于 2023-10-21  发布在  iOS
关注(0)|答案(4)|浏览(391)

我认为这是一个有点荒谬,但它很难找到有关什么是这个文件的信息。我已经找到了很多信息如何得到这个Apple Push Notification Authentication Key,但我也想知道到底是什么。
以下是我发现的一些信息:

优惠:

  • 无需每年重新生成推送证书;
  • 一个认证密钥可以用于所有应用程序;
  • 沙盒和生产也是如此。

Apple Docs
基于令牌的提供程序连接信任:使用基于HTTP/2的API的提供程序可以使用JSON Web令牌(JWT)来提供与APN连接的验证凭据。在这个方案中,您提供一个由Apple保留的公钥,以及一个由您保留和保护的私钥。然后,您的提供者使用您的私钥来生成和签署JWT提供者身份验证令牌。每个推送通知请求都必须包含提供商身份验证令牌。
您可以在提供商和APN之间使用基于令牌的单一连接,将推送通知请求发送到您的在线开发者帐户中列出其捆绑ID的所有应用。
每个推送通知请求都会导致APN的HTTP/2响应,向您的提供商返回成功或失败的详细信息。进一步检查基于令牌的提供程序到APN信任部分。

问题:

  • 什么是.p8文件?
  • 什么程序可以打开它?(钥匙扣对我不起作用)
  • 有没有办法把它转换成.pem.p12
  • 一个小的流出问题,为了不创建一个新的主题:服务器端是否以与.p12相同的方式操作.p8,或者应该添加额外的工具?
cclgggtu

cclgggtu1#

以下是我的研究状况:
APNS .p8文件包含PRIVATE KEY,用于SIGNAPNS消息的JWT内容。该文件本身是一个纯文本文件,里面的KEY格式为PEM格式。

  • 开始PRIVATE KEY-和-END PRIVATE KEY-之间的部分是密钥本身的base64格式的ASN. 1 PKCS#8表示。有些人可以使用以下Web服务来提取其内容(ASN1JS)。
    KEY本身是32字节长,用于为JWT创建所需的ECDSA P-256 SHA-256签名。生成的JWT看起来像"*{JWT header base64 encoded}.{JWT payload base64 encoded}.Signature(64 bytes)base64 encoded“。
    有很多Web服务可以解码这种令牌,但有些无法检查签名,因为相应的公钥是未知的(Apple在提供私钥时将其保密)。
    编辑:似乎,PUBLIC KEY也包含在.p8文件中,它可以通过OpenSSL提取(并且在解码ASN.1内容时可见:520比特流)。
    openssl ec -in AuthKey_123ABC4567_Public.p8-pubout -out AuthKey_123ABC4567_Public.p8
6tdlim6h

6tdlim6h2#

文件扩展名只是一种约定,但最有可能的是.p8扩展名用于指示它是PKCS#8 PrivateKeyInfo(或EncryptedPrivateKeyInfo)。
我希望钥匙串程序能够打开它作为“一把钥匙”,但没有一个mac在手,我不能说。它应该以SecItemImportkSecFormatOpenSSLkSecItemTypePrivateKey)打开。
有没有办法把它转换成.pem或.p12?
假设你的意思是.pem的“证书”,没有。如果你是说PEM编码的话,当然。它是“开始PRIVATE KEY”或“BEGIN ENCRYPTED PRIVATE KEY”,取决于。
从技术上讲,它也可以转换为PKCS#12。但是苹果的PKCS#12导入程序不会导入(我上次看到的)私钥,因为它无法弄清楚它们属于哪个证书(来自同一个PKCS#12)。
这只是一个私钥,没有证书(因此没有过期)。因此,基于证书的方法没有意义。
服务器端是否可以像.p12一样操作.p8,或者应该添加额外的工具?
这完全取决于协议的细节,我不知道。如果协议传输证书,则不同的机器参与转换。如果它只是传输一个签名,服务器查找公钥进行验证,那么服务器端没有任何变化。

nnvyjq4y

nnvyjq4y3#

是个文本文件!.p8扩展名表示包含公钥/私钥的简单文本文件。您可以使用任何文本编辑器(TextEdit,Vim,Sublime Text)打开它以查看您的密钥。

hs1ihplo

hs1ihplo4#

这是一个私钥,很可能是PEM格式。文件类型扩展名在IANA application/pkcs8中描述。
扩展名在RFC 5958中定义:
.p8文件有时是PEM编码的。当.p8文件是PEM编码时
他们使用.pem文件扩展名。PEM编码是Base64
编码来自[RFC 4648]的第4节,DER编码的
EncryptedPrivateKeyInfo夹在:

  • 开始加密私钥--结束加密私钥-
    或Base64编码,参见[RFC 4648]的第4节,DER-
    编码的PrivateKeyInfo夹在中间:
  • 开始私钥-结束私钥-
    您可以使用Keystore Explorer打开它。

相关问题