2009-11-19 88 views
149

如何創建一個.pem文件以存儲在託管服務器中以獲取APN有效載荷數據?爲APNS創建.pem文件?

+1

我可以使用.p12代替apns而不是.pem嗎? – 2016-03-31 13:19:37

+0

.pem的FYI定義:https://serverfault.com/a/21158/193377 PEM本身不是證書,它只是一種編碼數據的方式。 ....粘貼到電子郵件正文中是安全的,因爲它具有錨線並且是7位清潔的。 – AnneTheAgile 2017-09-13 15:13:34

+0

https://iosdevcenters.blogspot.com/2017/09/how-to-create-pem-file-for-apns-ios.html – 2017-11-21 02:51:39

回答

303

下面是我做的,從:blog.boxedice.com和喬佩齊羅的「iPhone高級項目」第10章。

隨着在鑰匙串aps_developer_identity.cer:從您的本地Mac和從登錄鑰匙串

  1. 啓動鑰匙串訪問,過濾器由證書類別。您將看到一個名爲「Apple Development推送服務」的可擴展選項
  2. 右鍵單擊「Apple開發推送服務」>導出「Apple開發推送服務ID123」。將此文件另存爲apns-dev-cert.p12文件,您可以在其中訪問它。無需輸入密碼。
  3. 下一個命令生成Mac的終端PEM格式(增強保密郵件安全證書)的證書:

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts 
    

在通過使用chmod 400設置這種未加密的密鑰的文件權限的服務器。

+3

我已經按照上述步驟,現在它的工作。我已經保持證書和我的本地Web服務器上的PHP腳本(Xampp)。 我能夠得到設備令牌,並且我在php腳本中使用它。 php腳本能夠連接併發送有效載荷數據。但仍然無法獲得PUSH通知。 問題是什麼?通知是否需要時間才能達到? – Biranchi 2009-11-19 12:16:42

+2

'chmod 400' YES !!!!!!這是我需要做的 – 2012-08-28 14:50:09

+0

使用這個,我也創建了鍵和修改的權限。但是,我仍然無法連接到APNS服務器,並且反饋命令仍然返回'#上建立到feedback.push.apple.com的連接''。任何線索......? – Prem 2013-01-10 12:38:54

10

- >>Apple's own tutorial < < - 是我遇到的唯一一套工作指令。它直截了當,我可以證實它在linux php服務器和windows php服務器上的出色工作。

您可以在頁面底部找到他們的5步pem創建過程。

+0

是的!只需按照簡單的教程。只需一個簡單的openssl命令。我不知道它是否重要,但我通過SSH'ing將命令運行到連接到APNS的服務器上。 – tylerl 2014-04-12 07:00:44

+1

@tylerl,PEM可以從任何機器生成 - 不一定是它將駐留的服務器。 – capikaw 2014-08-27 14:51:33

+0

我是否需要在部署php代碼的服務器本身上運行此過程?或者我可以使用從我的mac生成的.pem文件? – Jatin 2015-02-04 17:15:37

14

啓動的終端應用程序後輸入以下命令提示符

openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes 
+1

生成一個p12後,這應該是答案。 – Stone 2015-11-08 21:34:44

1

這是我做到了在Windows 7上,安裝OpenSSL(鏈接後進入Win32的安裝程序,選擇最新版本而不是輕的版本)。

使用此方法,您只需要從Apple下載的.cer文件。

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM 

這將創建一個文件,然後您將需要添加您的私鑰。

----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA ....等
AwIBAgwIBADAwIBADA ....等
AwIBAgwIBADAwIBADA。 ...等
----- END CERTIFICATE -----

就是這樣。

54

步驟:

  1. 創建CSR使用鑰匙鏈訪問
  2. 創建P12使用鑰匙鏈訪問使用私鑰
  3. APNS應用程序ID和證書

這給了你三個文件:

  • The C SR
  • 私鑰爲P12文件(PushChatKey.p12
  • 的SSL證書,aps_development.cer

前往您下載的文件,在我的情況下,桌面上的文件夾:

$ cd ~/Desktop/

將.cer文件轉換爲.pem文件:

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

私鑰的.p12文件轉換爲.pem文件:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

輸入導入口令:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

首先,您需要輸入密碼的中.P12文件,以便openssl可以讀取它。然後,您需要輸入一個新的密碼,用於加密PEM文件。本教程再次使用「pushchat」作爲PEM密碼。你應該選擇更安全的東西。 注意:如果您未輸入PEM密碼,openssl將不會提供錯誤消息,但生成的.pem文件不會在其中包含私鑰。

最後,結合證書和密鑰到單個的.pem文件:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem

187

發展階段:

第1步:從證書的.p12
創建證書.PEM 指揮:openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

第2步:從Key創建密鑰.pem。P12
命令:openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

步驟3:可選(如果你想刪除第二步問口令)
命令:openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

第4步:現在我們有合併Key.pem和Certificate.pem以獲得開發階段所需的開發.pem應用程序的開發階段
Comman d:cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (If 3rd step is performed)

命令:cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

步驟5:檢查證書的有效性,並連接到APNS
命令:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem (If 3rd step is not performed)
命令:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed)

P roduction階段:

第1步:從證書創建證書。質子交換膜的.p12
命令:openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

步驟2:創建一個從主要的.p12
命令鍵。質子交換膜:openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

步驟3:可選的(如果你想刪除第二步問口令)
命令:openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

第4步:現在我們要合併的關鍵。質子交換膜和證書即可生產。質子交換膜所需的.pem對於應用的生產階段
命令推送通知:cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed) 命令:cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

第5步:檢查證書的有效性,並連接到APNS
命令:openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem (If 3rd step is not performed)
命令:openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem (如果執行)

+4

謝謝,這是唯一一個爲我工作的人。 – 2015-03-04 00:06:48

+5

將它保存在我的寶庫中! :P有史以來最偉大的回答! – Blackening 2015-07-08 08:37:47

+3

你是這位作品的神,謝謝。投票。這應該是答案,因爲它深入探討如何一步步創建它 – MNM 2016-05-25 02:20:18

1

我從來不記得創建.pem文件所需的openssl命令,所以我做了這個bash腳本來簡化這一過程:

#!/bin/bash 
if [ $# -eq 2 ] 
then 
    echo "Signing $1..." 

    if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then 
     echo "Error signing certificate." 
    else 
     echo "Certificate created successfully: $2" 
    fi 
else 
    if [ $# -gt 2 ] 
    then 
     echo "Too many arguments" 
     echo "Syntax: $0 <input.p12> <output.pem>" 
    else 
     echo "Missing arguments" 
     echo "Syntax: $0 <input.p12> <output.pem>" 
    fi 
fi 

的名字,例如,signpem.sh並將其保存在您的用戶文件夾(/Users/<username>?)。創建文件後,做一個chmod +x signpem.sh使其可執行文件,然後你可以運行:

~/signpem myCertificate.p12 myCertificate.pem

而且myCertificate.pem將被創建。

2

我會建議一個更簡單的解決方案。只需使用Certifire
Certifire是一個macOS應用程序,只需在幾秒鐘內點擊一次即可生成Apple推送通知證書。

以下是步驟:
1.下載應用程序。
2.使用Apple開發者帳戶憑據登錄。
3.選擇應用程序ID
4.單擊「生成」按鈕
5.完成!

您將獲得.pem格式以及.p12格式的APN證書。 更多的,你也會得到.pem和.p12的組合(key + cert)!
更重要的是,您還將獲得所有這些證書的非密碼版本!

enter image description here

enter image description here

0

有創造.PEM文件,如果你已經APNS P12文件在你的鑰匙鏈訪問的最簡單的方法。

打開終端並輸入以下命令:

對於商發展 OpenSSL的PKCS12 -in APNS-DIV-cert.p12 -out APNS-DIV-cert.pem -nodes -clcerts

另外,製造 OpenSSL的PKCS12 -in APNS - 距離 - cert.p12退房手續APNS-DIST-cert.pem -nodes -clcerts

重命名這個名字您的P12文件:APNS-DIV-cert.p12否則代替這需要輸入y我們的文件名謝謝!!