สร้างไฟล์. pem ที่ใช้เพื่อตั้งค่า Apple Push Notifications


290

ฉันพยายามและพยายามสร้างไฟล์. pem ทุกครั้งที่สร้างใบรับรองจากบัญชีของลูกค้าและสร้างไฟล์. pem โดยใช้เทอร์มินัล แต่ก็ไม่มีประโยชน์ ใครสามารถให้กระบวนการทีละขั้นตอนได้บ้าง?

คำตอบ:


936

ในการเปิดใช้งานการแจ้งเตือนแบบพุชสำหรับแอป iOS ของคุณคุณจะต้องสร้างและอัปโหลดใบรับรองการแจ้งเตือนแบบพุชของ Apple (ไฟล์. pem) ให้กับเราเพื่อให้เราสามารถเชื่อมต่อกับ Apple Push Server ในนามของคุณ

( เวอร์ชั่นที่อัปเดตพร้อมภาพหน้าจอที่อัปเดตแล้วที่นี่ )

ขั้นตอนที่ 1: ล็อกอินเข้าสู่ iOS Provisioning Portal คลิก "ใบรับรอง" บนแถบนำทางด้านซ้าย จากนั้นคลิกปุ่ม "+"

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 2: เลือกตัวเลือกการแจ้งเตือนบริการพุชของ Apple (การผลิต) ใต้ส่วนการแจกจ่ายจากนั้นคลิกปุ่ม "ดำเนินการต่อ"

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 3: เลือกรหัสแอพที่คุณต้องการใช้สำหรับแอพ BYO ของคุณ (วิธีสร้างแอป ID) จากนั้นคลิก "ดำเนินการต่อ" เพื่อไปยังขั้นตอนถัดไป

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 4: ทำตามขั้นตอน "เกี่ยวกับการสร้างคำขอลงนามใบรับรอง (CSR)" เพื่อสร้างคำขอลงนามใบรับรอง

ป้อนคำอธิบายรูปภาพที่นี่

เพื่อเสริมการเรียนการสอนที่จัดทำโดย Apple นี่คือภาพหน้าจอเพิ่มเติมบางส่วนที่จะช่วยให้คุณทำตามขั้นตอนที่ต้องการได้:

ขั้นตอนที่ 4 ภาพหน้าจอเพิ่มเติม 1: ไปที่ผู้ช่วยรับรองการเข้าถึง Keychain บน Mac ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 4 ภาพหน้าจอเพิ่มเติม 2: กรอกข้อมูลใบรับรอง คลิกดำเนินการต่อ

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 5: อัปโหลดไฟล์ ".certSigningRequest" ซึ่งสร้างขึ้นในขั้นตอนที่ 4 จากนั้นคลิกปุ่ม "สร้าง"

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 6: คลิก "เสร็จสิ้น" เพื่อเสร็จสิ้นการลงทะเบียนหน้าการจัดสรร iOS จะถูกรีเฟรชซึ่งมีลักษณะเหมือนหน้าจอต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นคลิกปุ่ม "ดาวน์โหลด" เพื่อดาวน์โหลดใบรับรอง (ไฟล์. cer) ที่คุณสร้างขึ้นในตอนนี้ - ดับเบิลคลิกไฟล์ที่ดาวน์โหลดเพื่อติดตั้งใบรับรองลงใน Keychain Access บน Mac ของคุณ

ขั้นตอนที่ 7: บน Mac ของคุณไปที่ "Keychain" ค้นหาใบรับรองที่คุณเพิ่งติดตั้ง หากไม่แน่ใจว่าใบรับรองใดถูกต้องควรเริ่มต้นด้วย "Apple Production IOS Push Services:" ตามด้วย ID ชุดรวมของแอปของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 8: ขยายใบรับรองคุณควรเห็นคีย์ส่วนตัวที่มีชื่อของคุณหรือชื่อ บริษัท ของคุณ เลือกทั้งสองรายการโดยใช้ปุ่ม "เลือก" บนแป้นพิมพ์คลิกขวา (หรือกดปุ่ม cmd-click หากคุณใช้เมาส์ปุ่มเดียว) เลือก "ส่งออก 2 รายการ" เช่นด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นบันทึกไฟล์ p12 ด้วยชื่อ "pushcert.p12" ไปยังเดสก์ท็อปของคุณ - ตอนนี้คุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านเพื่อป้องกันมันคุณสามารถคลิก Enter เพื่อข้ามรหัสผ่านหรือป้อนรหัสผ่านที่คุณต้องการ

ขั้นตอนที่ 9: ตอนนี้ส่วนที่ยากที่สุด - เปิด "Terminal" บน Mac ของคุณและเรียกใช้คำสั่งต่อไปนี้:

cd
cd Desktop
openssl pkcs12 -in pushcert.p12 -out pushcert.pem -nodes -clcerts

ขั้นตอนที่ 10: ลบ pushcert.p12 ออกจากเดสก์ท็อปเพื่อหลีกเลี่ยงการอัพโหลดผิดเพื่อสร้างพื้นที่ของคุณเอง เปิด "Terminal" บน Mac ของคุณและเรียกใช้คำสั่งต่อไปนี้:

cd
cd Desktop
rm pushcert.p12

ขั้นตอนที่ 11 - อัปเดต AWS ใหม่: สร้างรายการใหม่pushcert.p12เพื่อส่งไปยัง AWS SNS ดับเบิ้ลคลิกที่ตัวใหม่pushcert.pemแล้วส่งออกตัวที่สูงบนกรีนเท่านั้น

ป้อนคำอธิบายรูปภาพที่นี่ เครดิต: การอัปเดตใหม่ของ AWS

ตอนนี้คุณได้สร้างใบรับรองการแจ้งเตือน Apple Push (ไฟล์. p12) เรียบร้อยแล้ว! คุณจะต้องอัปโหลดไฟล์นี้ไปยังพื้นที่สร้างของคุณเองในภายหลัง :)


11
ดูเหมือนว่าตอนนี้คุณสามารถส่งออกโดยตรงจาก Keychain ไปยังไฟล์ PEM (ขั้นตอน 8-10)
Kyle Clegg

10
@ KyleClegg: อย่างไร
eugene

3
พื้นที่ "สร้างของคุณเอง" คืออะไรและทำไมเราต้องอัปโหลดไฟล์ pem ไปที่มัน
Rafi

1
เหตุใดคำตอบทั้งหมดเหล่านี้ในอินเทอร์เน็ตจึงไม่สนใจคำถามจริงที่ถูกถามอย่างต่อเนื่องว่า 'สร้างด้วยตัวคุณเอง' คืออะไร คุณจะอัพโหลด PEM นี้ได้ที่ไหนถ้าใช้ Xcode?
RobertyBob

1
ในกรณีของฉันฉันจำเป็นต้องสร้างไฟล์ pem สองไฟล์จากใบรับรอง p12 เพียงส่งออกไฟล์ใบรับรองและคีย์ตามลำดับในการเข้าถึงพวงกุญแจแทนที่จะส่งออก 2 รายการพร้อมกัน แต่คำตอบนี้ยอดเยี่ยมมาก!
wei

79

มีวิธีการแก้ปัญหาที่ง่ายมากคือวันนี้ - pem เครื่องมือนี้ทำให้ชีวิตง่ายขึ้นมาก

ตัวอย่างเช่นหากต้องการสร้างหรือต่ออายุใบรับรองการแจ้งเตือนแบบพุชเพียงป้อน:

fastlane pem 

และจะเสร็จในไม่กี่นาที ในกรณีที่คุณต้องการใบรับรอง sandbox ให้ป้อน:

fastlane pem --development

และมันก็สวย


9
และมีไม่เพียง PEM เครื่องมือ fastlane ทั้งหมดนั้นยอดเยี่ยมแน่นอน
Benjamin

ใช้ได้กับระบบที่ไม่ใช่ของ Apple หรือไม่?
doublejr

@KrauseFx ถ้าผมทำสร้างผ่านทาง pem ฉันจะได้รับมันแสดงให้เห็นที่นี่: developer.apple.com/account/ios/certificate ? ฉันพบว่ามันค่อนข้างมีประโยชน์ที่จะเห็นวันหมดอายุ ฯลฯ ล่าสุดหรือไม่ นี่เป็นสิ่งที่เกิดขึ้นโดยอัตโนมัติหรือไม่
IonicBurger

1
@Nikola ไม่ต้องดำเนินการใด ๆ กับ iTunes Connect คุณสามารถใช้ไฟล์ pem นั้นได้ทันที
KrauseFx

1
@mikejd เราไม่จำเป็นต้องระบุ p12 ใดที่ควรใช้สำหรับ pem?
Maulik

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

มันใช้ได้ไหม? ฉันสร้างไฟล์ PEM บน windows 10 โดยใช้วิธีนี้ แต่ฉันได้รับ "ไม่สามารถเชื่อมต่อกับ 'ssl: \ / \ / gateway.sandbox.push.apple.com" เมื่อฉันใช้ pem ที่สร้างขึ้นเพื่อส่งการแจ้งเตือนแบบพุช
Arivan Bastos

3

Apple ได้เปลี่ยนชื่อของใบรับรองที่ออก ตอนนี้คุณสามารถใช้ใบรับรองเดียวกันสำหรับทั้งการพัฒนาและการผลิต ในขณะที่คุณยังสามารถขอใบรับรองการพัฒนาเท่านั้นคุณไม่สามารถขอใบรับรองการผลิตเท่านั้นได้อีกต่อไป

โปรดดู screnshot ด้านล่าง


1

มันง่ายมากหลังจากส่งออก Cert.p12 และ key.p12 โปรดค้นหาคำสั่งด้านล่างสำหรับการสร้างไฟล์ 'apns' .pem

https://www.sslshopper.com/ssl-converter.html

command to create apns-dev.pem from Cert.pem and Key.pem

    

openssl rsa -in Key.pem -out apns-dev-key-noenc.pem

    

cat Cert.pem apns-dev-key-noenc.pem > apns-dev.pem

คำสั่งดังกล่าวมีประโยชน์สำหรับทั้ง Sandbox และการผลิต


1

ตามการแก้ไขปัญหา Push Certificate

ใบรับรอง SSL ที่มีอยู่ในบัญชีโปรแกรมนักพัฒนา Apple ของคุณมีรหัสสาธารณะ แต่ไม่ใช่รหัสส่วนตัว รหัสส่วนตัวมีอยู่เฉพาะใน Mac ที่สร้างคำขอลงนามใบรับรองที่อัปโหลดไปยัง Apple ทั้งกุญแจสาธารณะและกุญแจส่วนตัวจำเป็นต้องส่งออกไฟล์ Privacy Enhanced Mail (PEM)

โอกาสเป็นสาเหตุที่คุณไม่สามารถส่งออก PEM ที่ใช้งานได้จากใบรับรองที่ลูกค้าให้ไว้นั่นคือคุณไม่มีรหัสส่วนตัว ใบรับรองประกอบด้วยพับลิกคีย์ในขณะที่ไพรเวตคีย์อาจมีเฉพาะใน Mac ที่สร้าง CSR ดั้งเดิม

คุณสามารถ:

  1. พยายามรับคีย์ส่วนตัวจาก Mac ที่ แต่เดิมสร้าง CSR การส่งออก PEM สามารถทำได้จาก Mac เครื่องนั้นหรือคุณสามารถคัดลอกคีย์ส่วนตัวไปยังเครื่อง Mac เครื่องอื่น

หรือ

  1. สร้าง CSR ใหม่ใบรับรอง SSL ใหม่และคราวนี้สำรองคีย์ส่วนตัว

0

ขอบคุณ! ถึงคำตอบทั้งหมดข้างต้น ฉันหวังว่าคุณจะมีไฟล์. p12 ตอนนี้เปิดเทอร์มินัลเขียนคำสั่งต่อไปนี้ ตั้งค่าเทอร์มินัลเป็นพา ธ ที่คุณใส่ไฟล์. 12

$ openssl pkcs12 -in yourCertifcate.p12 -out pemAPNSCert.pem -nodes
Enter Import Password: <Just enter your certificate password>
MAC verified OK

ตอนนี้ไฟล์. pemของคุณจะถูกสร้างขึ้น

ตรวจสอบไฟล์. pem ก่อนเปิด. pem ในเท็กซ์เอดิเตอร์เพื่อดูเนื้อหา เนื้อหาใบรับรองควรอยู่ในรูปแบบที่แสดงด้านล่าง ตรวจสอบให้แน่ใจว่าไฟล์ pem มีเนื้อหาใบรับรอง (จาก BEGIN CERTIFICATE ถึง END CERTIFICATE) รวมถึงคีย์ส่วนตัวของใบรับรอง (จาก BEGIN PRIVATE KEY ถึง END PRIVATE KEY):

> Bag Attributes
>     friendlyName: Apple Push Services:<Bundle ID>
>     localKeyID: <> subject=<>
> -----BEGIN CERTIFICATE-----
> 
> <Certificate Content>
> 
> -----END CERTIFICATE----- Bag Attributes
>     friendlyName: <>
>     localKeyID: <> Key Attributes: <No Attributes>
> -----BEGIN PRIVATE KEY-----
> 
> <Certificate Private Key>
> 
> -----END PRIVATE KEY-----

นอกจากนี้คุณตรวจสอบความถูกต้องของใบรับรองโดยไปที่ตัวถอดรหัสใบรับรอง SSLShopper และวางเนื้อหาใบรับรอง (จาก BEGIN CERTIFICATE ถึง END CERTIFICATE) เพื่อรับข้อมูลทั้งหมดเกี่ยวกับใบรับรองดังที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.