Nik*_*Kov 4 certificate apple-push-notifications ios
我认为这有点荒谬,但是很难找到有关此文件的信息。我已经找到了很多有关如何获得此信息的信息Apple Push Notification Authentication Key
,但我也想确切地知道它是什么。
这是我找到的一些信息:
优点:
基于令牌的提供程序连接信任:使用基于HTTP / 2的API的提供程序可以使用JSON Web令牌(JWT)提供用于与APN连接的验证凭据。在此方案中,您设置了要由Apple保留的公共密钥以及由您保留和保护的私有密钥。然后,您的提供者使用您的私钥来生成和签名JWT提供者身份验证令牌。您的每个推送通知请求都必须包含提供者身份验证令牌。
您可以使用提供商之间的单个基于令牌的连接,APN可以将推送通知请求发送到捆绑ID在您的在线开发者帐户中列出的所有应用。
每个推送通知请求都会导致来自APN的HTTP / 2响应,并向您的提供程序返回成功或失败的详细信息。进一步检查基于令牌的提供商到APN的信任部分。
问题:
.pem
或.p12
?文件扩展名只是一种约定,但.p8
扩展名很可能用于指示它是 PKCS#8 PrivateKeyInfo(或 EncryptedPrivateKeyInfo)。
我希望钥匙串程序能够将其作为“钥匙”打开,但我手头没有 Mac,我不能说。它应该使用SecItemImport ( kSecFormatOpenSSL
, )打开kSecItemTypePrivateKey
。
有没有办法将其转换为 .pem 或 .p12?
假设您的意思是“证书” .pem
,则不是。如果您指的是 PEM 编码,当然可以。它是“BEGIN PRIVATE KEY”或“BEGIN ENCRYPTED PRIVATE KEY”,具体取决于。
从技术上讲,它还可以转换为 PKCS#12。但苹果的 PKCS#12 导入程序不会导入(我上次看到的)私钥,因为它无法弄清楚它们属于哪个证书(来自同一个 PKCS#12)。
这只是一个私钥,没有证书(因此不会过期)。因此基于证书的方法没有意义。
服务器端是否可以像 .p12 一样使用 .p8 进行操作,还是应该添加其他工具?
这完全取决于协议的细节,我不知道。如果协议传输证书,则转换涉及不同的机器。如果它只是传输签名并且服务器查找公钥进行验证,那么服务器端不会发生任何变化。
以下是我的研究状态:
该APNS .p8文件包含私钥用来注册为APNS消息JWT内容。该文件本身是纯文本文件,其内部的KEY格式为PEM格式。
----- BEGIN PRIVATE KEY -----和----- END PRIVATE KEY -----之间的部分是密钥本身的base64格式的ASN.1 PKCS#8表示形式。有些人可以使用以下Web服务来提取其内容(ASN1JS)。
KEY本身的长度为32个字节,用于为JWT创建所需的ECDSA P-256 SHA-256签名。生成的JWT看起来像这样的“ {JWT标头base64编码}。{JWT有效载荷base64编码}。签名(64字节)base64编码 ”。
有许多Web服务可对此类令牌进行解码,但由于无法识别相应的PUBLIC KEY(Apple在提供PRIVATE KEY时将其保密),因此某些服务无法检查签名。
编辑:似乎,公共密钥也包含在.p8文件中,它可以通过OpenSSL提取(在解码ASN.1内容:520位流时可见)。
openssl ec -in AuthKey_123ABC4567.p8 -pubout -out AuthKey_123ABC4567_Public.p8
归档时间: |
|
查看次数: |
4457 次 |
最近记录: |