簡體   English   中英

什么是.p8擴展名的文件? (APNs Auth Key / JWT)

[英]What is the file with .p8 extension? (APNs Auth Key / JWT)

我認為這有點荒謬,但很難找到有關這個文件的信息。 我已經找到了很多關於如何獲得Apple Push Notification Authentication Key ,但我也想知道究竟是什么。
以下是我發現的一些信息:

優點:

  • 無需每年重新生成推送證書;
  • 一個身份驗證密鑰可用於您的所有應用程序;
  • 沙盒和生產相同。

來自Apple Docs

基於令牌的提供者連接信任:使用基於HTTP / 2的API的提供者可以使用JSON Web令牌(JWT)來提供與APN連接的驗證憑據。 在此方案中,您可以配置Apple保留的公鑰以及您保留和保護的私鑰。 然后,您的提供商使用您的私鑰生成並簽署JWT提供程序身份驗證令牌。 每個推送通知請求都必須包含提供程序身份驗證令牌。

您可以在提供商和APN之間使用單個基於令牌的連接,將推送通知請求發送到其在線開發者帳戶中列出其捆綁ID的所有應用。

每個推送通知請求都會產生來自APN的HTTP / 2響應,並向您的提供商返回成功或失敗的詳細信息。 進一步檢查基於令牌的Provider-to-APNs Trust部分。

問題:

  • 什么是.p8文件?
  • 什么程序可以打開它? (鑰匙扣對我不起作用)
  • 有沒有辦法將其轉換為.pem.p12
  • 為了不創建新主題,一個小小的流出問題:服務器端是否與.p8一樣使用.p8,或者應該添加其他工具?

以下是我的研究狀況:

該APNS .p8文件包含用於簽署 JWT內容APNS消息的私鑰 文件本身是純文本文件,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 header base64 encoded}。{JWT payload base64 encoded} .Signature(64 bytes)base64 encoded '。

有許多Web服務可以解碼這些令牌,但有些無法檢查簽名,因為相應的PUBLIC KEY未知(Apple在提供私鑰時會保密)。

編輯:似乎PUBLIC KEY也包含在.p8文件中,它可以通過OpenSSL提取(並且在解碼ASN.1內容時可見:520位流)。

openssl ec -in AuthKey_123ABC4567.p8 -pubout -out AuthKey_123ABC4567_Public.p8

文件擴展名只是一種約定,但很可能.p8擴展名用於表示它是PKCS#8 PrivateKeyInfo(或EncryptedPrivateKeyInfo)。

我希望Keychain程序能夠將它作為“一把鑰匙”打開,但手頭沒有Mac我不能說。 它應該使用SecItemImportkSecFormatOpenSSLkSecItemTypePrivateKey )打開。

有沒有辦法將其轉換為.pem或.p12?

假設你的意思是.pem “證書”,沒有。 如果你的意思是PEM編碼,當然。 它取決於“BEGIN PRIVATE KEY”或“BEGIN ENCRYPTED PRIVATE KEY”。

從技術上講,它也可以轉換為PKCS#12。 但Apple的PKCS#12導入器不會導入(最后我看到)私鑰,它無法確定它們所屬的證書(來自相同的PKCS#12)。

這只是一個私鑰,沒有證書(因此沒有到期)。 因此基於證書的方法沒有意義。

服務器端是否可以像.p12一樣使用.p8運行,還是應該添加其他工具?

這完全取決於協議的細節,我不知道。 如果協議傳輸證書,那么轉換涉及不同的機器。 如果它只是傳輸了一個簽名而服務器查找了公鑰進行驗證,那么服務器端就沒有任何改變。

這是一個文本文件! .p8擴展名表示包含公鑰/私鑰的簡單文本文件。 您可以使用任何文本編輯器(TextEdit,vim,Sublime Text)打開它以查看您的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM