Just My Life & My Work

又到了一年一度更新推播憑證的時候!因為先前僅有初次產出推播憑證經驗,但沒有更新推播憑證的經驗,以為會有多難,沒想到就跟初次一樣的步驟。

發現舊有的憑證無法更新期限,那麼就如同第一次建立新的推播憑證吧!此次推播憑證更新:2020/10/05,期限:2021/11/04,有效期間為13個月

登入Apple Developer 後台:https://developer.apple.com

Certificates, Identifiers & Profiles

Services可發現三種服務,目前可以直接產出Sandbox與Production推播憑證,過去分開產出的方式已被Apple棄用。這樣也好,不然每次都要產出兩次,有時候還會搞不清楚憑證是Sandbox還是Production。

選擇:Apple Push Notification service SSL (Sandbox & Production)

選擇:App ID

取得:Certificate Signing Request

開啟內建軟體「鑰匙圈存取」

點擊憑證輔助程式->從憑證授權要求憑證

填入使用者電子郵件地址,此可隨意填寫,並選擇儲存到磁碟。

產出檔案:CertificateSigningRequest.certSigningRequest

將此檔案上傳剛才步驟的開發者後台,將產出推播憑證:aps.cer。

個人資訊交換.p12

下載並打開aps.cer,便會安裝到「鑰匙圈存取」。打開軟體到我的憑證,可發現剛安裝的憑證。

在該憑證右鍵,輸出「Apple Push Services」。

選擇檔案格式「個人資訊交換.p12」。

產出cert.p12,此檔即可放到推播後台,例如第三方推播平台Onesignal

不過有些推播後台需要不同的格式:隱私權強化郵件.pem。

隱私權強化郵件.pem

打開終端機,使用以下指令:

openssl pkcs12 -in cert.p12 -out push.pem -nodes -clcerts

即可產出push.pem。

驗證.p12

可直接上傳到Onesignal推播平台,若能推播到手機表示成功。

當然要先整合Onesignal套件到App中,讓Onesignal獲得手機Device Token。

驗證.pem

在終端機打指令:

openssl s_client -connect gateway.push.apple.com:2195 -cert push.pem -key push.pem

以上回應略⋯⋯


SSL handshake has read 4192 bytes and written 2355 bytes

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA

Server public key is 2048 bit

Secure Renegotiation IS supported

Compression: NONE

Expansion: NONE

No ALPN negotiated

SSL-Session:

    Protocol  : TLSv1.2

    Cipher    : DES-CBC3-SHA

    Session-ID:

    Session-ID-ctx:

    Master-Key: FD5ED0BA180A7E5161A850783DFA3EB31A0627737123C52635FEAF4517A25310045E8D234A51D0DE64DFA869BE30CF10

    Start Time: 1601894773

    Timeout   : 7200 (sec)

    Verify return code: 0 (ok)

跑完以上表示成功,可把push.pem給推播後台。

若是驗證沒通過,則會有如下回應:

unable to load client certificate private key file

4466151020:error:09FFF06C:PEM routines:CRYPTO_internal:no start line:/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.140.1/libressl-2.8/crypto/pem/pem_lib.c:684:Expecting: ANY PRIVATE KEY

什麼原因?此時透過文字編輯器查看.pem檔,只有CERTIFICATE

正確的.pem檔有CERTIFICATEPRIVATE KEY

推播後台遇到問題

[ApnsPHP_Exception] Unable to connect to ‘ssl://gateway.push.apple.com:2195’:  (0)

雖然是寫無法連線,但也有可能是推播憑證有問題。

我習慣自己就能搞定所有步驟,而不用等待同事有空閒時,才幫我確認憑證正確與否。

參考

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: