ฉันจะสร้างไฟล์. pem เพื่อจัดเก็บในเซิร์ฟเวอร์การโฮสต์สำหรับข้อมูลโหลดของ APN ได้อย่างไร
ฉันจะสร้างไฟล์. pem เพื่อจัดเก็บในเซิร์ฟเวอร์การโฮสต์สำหรับข้อมูลโหลดของ APN ได้อย่างไร
คำตอบ:
นี่คือสิ่งที่ฉันทำจาก: blog.boxedice.comและ "โครงการขั้นสูงของ iPhone" บทที่ 10 โดย Joe Pezzillo
ด้วย aps_developer_identity.cer ในพวงกุญแจ:
apns-dev-cert.p12
ไฟล์ในที่ที่คุณสามารถเข้าถึงได้ ไม่จำเป็นต้องใส่รหัสผ่านคำสั่งถัดไปสร้างใบรับรองในเทอร์มินัลของ Mac สำหรับรูปแบบ PEM (ใบรับรองความปลอดภัยของจดหมายส่วนบุคคลขั้นสูง):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
บนเซิร์ฟเวอร์ตั้งค่าการอนุญาตไฟล์ของคีย์ที่ไม่ได้เข้ารหัสนี้โดยใช้ chmod 400
ขั้นตอนการพัฒนา:
ขั้นตอนที่ 1: สร้าง Certificate .pem จาก Certificate .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
ขั้นตอนที่ 2:สร้างคีย์. pem จาก Key .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:ตอนนี้เราต้องรวมคีย์. pem และใบรับรอง. pem เพื่อรับการพัฒนา. pem ที่จำเป็นสำหรับการแจ้งเตือนแบบพุชในขั้นตอนการพัฒนาแอพ
หากดำเนินการขั้นตอนที่ 3 ให้รัน:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
หากไม่ได้ดำเนินการขั้นตอนที่ 3 ให้รัน:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
ขั้นตอนที่ 5:ตรวจสอบความถูกต้องของใบรับรองและการเชื่อมต่อกับ APNS
หากดำเนินการขั้นตอนที่ 3 ให้รัน:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
หากไม่ได้ดำเนินการขั้นตอนที่ 3 ให้รัน:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
ขั้นตอนการผลิต:
ขั้นตอนที่ 1: สร้าง Certificate .pem จาก Certificate .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
ขั้นตอนที่ 2:สร้างคีย์. pem จาก Key .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 และใบรับรอง. pem เพื่อรับการผลิต. pem ที่จำเป็นสำหรับการแจ้งเตือนแบบพุชในขั้นตอนการผลิตของแอพ
หากดำเนินการขั้นตอนที่ 3 ให้รัน:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
หากไม่ได้ดำเนินการขั้นตอนที่ 3 ให้รัน:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
ขั้นตอนที่ 5:ตรวจสอบความถูกต้องของใบรับรองและการเชื่อมต่อกับ APNS
หากดำเนินการขั้นตอนที่ 3 ให้รัน:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
หากไม่ได้ดำเนินการขั้นตอนที่ 3 ให้รัน:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
ขั้นตอน:
สิ่งนี้ให้สามไฟล์:
PushChatKey.p12
)aps_development.cer
ไปที่โฟลเดอร์ที่คุณดาวน์โหลดไฟล์ในกรณีของฉัน Desktop:
$ 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
เปิดแอปพลิเคชัน Terminalและป้อนคำสั่งต่อไปนี้หลังจากได้รับแจ้ง
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> บทช่วยสอนของ Apple << - เป็นชุดคำสั่งที่ใช้งานได้เท่านั้นที่ฉันเคยเจอ มันตรงไปตรงมาและฉันสามารถยืนยันได้ว่าทำงานได้อย่างยอดเยี่ยมทั้งบนเซิร์ฟเวอร์ linux php และเซิร์ฟเวอร์ windows php
คุณสามารถค้นหากระบวนการสร้าง pem 5 ขั้นตอนได้ที่ด้านล่างของหน้า
คุณสามารถดูได้ที่นี่ ฉันมีกระบวนการอย่างละเอียดที่อธิบายด้วยรูปภาพตั้งแต่การสร้างใบรับรองไปจนถึงคีย์แอพไปยังโปรไฟล์การจัดสรรจนถึงในที่สุด pem http://docs.moengage.com/docs/apns-certificate-pem-file
หมายเหตุ:คุณต้องมีทีมตัวแทนหรือบทบาทผู้ดูแลระบบใน App Store Connect เพื่อทำงานใด ๆ เหล่านี้ หากคุณไม่ได้เป็นส่วนหนึ่งของทีมใน App Store เชื่อมต่อสิ่งนี้อาจไม่ส่งผลกระทบต่อคุณ
การส่งการแจ้งเตือนแบบพุชไปยังแอปพลิเคชั่น iOS นั้นจำเป็นต้องสร้างคีย์การเข้ารหัส ในอดีตนี้เป็นกระบวนการที่ยุ่งยากที่ใช้คีย์ SSL และใบรับรอง ใบรับรอง SSL แต่ละใบนั้นเฉพาะกับแอปพลิเคชั่น iOS เดียว ในปี 2559 Apple ได้เปิดตัวกลไกการรับรองความถูกต้องใหม่ที่น่าเชื่อถือและใช้งานง่ายขึ้น คีย์การรับรองความถูกต้องใหม่มีความยืดหยุ่นและง่ายต่อการบำรุงรักษาและนำไปใช้กับมากกว่าในแอป iOS
แม้ว่าจะเป็นเวลาหลายปีแล้วที่มีการเปิดใช้งานคีย์การรับรองความถูกต้องไม่ใช่ทุกบริการที่รองรับ FireBase และ Amazon Pinpoint รองรับคีย์การตรวจสอบสิทธิ์ Amazon SNS, Urban Airship, Twilio และ LeanPlum ไม่ได้ทำ แพ็คเกจซอฟต์แวร์โอเพนซอร์สจำนวนมากยังไม่สนับสนุนคีย์การตรวจสอบสิทธิ์
ในการสร้างใบรับรอง SSL ที่ต้องการและส่งออกเป็นไฟล์ PEM ที่มีคีย์สาธารณะและส่วนตัว:
หากคุณมีการตั้งค่าใบรับรอง SSL สำหรับแอปในเว็บไซต์ Apple Developer Center แล้วคุณสามารถข้ามไปข้างหน้าเพื่อแปลงใบรับรองเป็นรูปแบบ PEM เก็บไว้ในใจว่าคุณจะทำงานเป็นปัญหาถ้าคุณไม่ได้นอกจากนี้ยังมีคีย์ส่วนตัวที่ถูกสร้างขึ้นใน Mac ที่สร้างคำขอลงนามที่ถูกอัปโหลดไปยังแอปเปิ้ล
อ่านต่อไปเพื่อดูวิธีหลีกเลี่ยงการสูญเสียการติดตามคีย์ส่วนตัวนั้น
Xcode ไม่ควบคุมใบรับรองหรือปุ่มสำหรับการแจ้งเตือนแบบพุช ในการสร้างคีย์และเปิดใช้งานการแจ้งเตือนแบบพุชสำหรับแอปคุณต้องไปที่เว็บไซต์ Apple Developer Center ส่วนใบรับรองตัวระบุและโปรไฟล์ของบัญชีของคุณควบคุม ID แอปและใบรับรอง
ในการเข้าถึงใบรับรองและโปรไฟล์คุณต้องมีการเป็นสมาชิก Apple Developer Program ที่ชำระเงินหรือเป็นส่วนหนึ่งของทีม
แอพที่ใช้การแจ้งเตือนแบบพุชไม่สามารถใช้รหัสแอพหรือสัญลักษณ์การจัดสรรได้ แต่ละแอปจะต้องให้คุณตั้งค่าบันทึก ID ของแอปในพอร์ทัลศูนย์ผู้พัฒนาแอปเปิ้ล
การสร้างใบรับรอง SSL สำหรับการแจ้งเตือนแบบพุชเป็นกระบวนการของหลายภารกิจ แต่ละงานมีหลายขั้นตอน สิ่งเหล่านี้จำเป็นสำหรับการส่งออกคีย์ในรูปแบบ P12 หรือ PEM ตรวจสอบขั้นตอนก่อนดำเนินการต่อ
ในการสร้างใบรับรองคุณจะต้องสร้างคำขอลงนามใบรับรอง (CSR) บน Mac และอัปโหลดไปยัง Apple
ต่อมาถ้าคุณต้องการที่จะส่งออกใบรับรองนี้เป็น pkcs12 A (aka P12) ไฟล์ที่คุณจะต้องใช้พวงกุญแจจากMac เดียวกัน เมื่อมีการสร้างคำขอการลงชื่อเข้าใช้ Keychain Access จะสร้างชุดคีย์ในพวงกุญแจเริ่มต้น คีย์เหล่านี้จำเป็นสำหรับการทำงานกับใบรับรองที่ Apple จะสร้างจากคำขอลงนาม
เป็นวิธีปฏิบัติที่ดีที่จะมีพวงกุญแจแยกต่างหากสำหรับข้อมูลประจำตัวที่ใช้สำหรับการพัฒนาโดยเฉพาะ หากคุณทำเช่นนี้ตรวจสอบให้แน่ใจว่าได้ตั้งค่าพวงกุญแจนี้ให้เป็นค่าเริ่มต้นก่อนที่จะใช้ผู้ช่วยใบรับรอง
เมื่อสร้างคำขอลงนามใบรับรองผู้ช่วยรับรองจะสร้างคีย์การเข้ารหัสสองคีย์ในพวงกุญแจเริ่มต้น มันเป็นสิ่งสำคัญที่จะทำให้การพัฒนาพวงกุญแจเริ่มต้นเพื่อให้กุญแจอยู่ในพวงกุญแจด้านขวา
การสร้างคำขอลงนามสร้างคู่ของคีย์ ก่อนที่จะอัพโหลดคำขอลงนามยืนยันว่าพวงกุญแจพัฒนามีกุญแจ ชื่อของพวกเขาจะเหมือนกับชื่อสามัญที่ใช้ในคำขอเซ็นชื่อ
เมื่อสร้างคำขอเซ็นชื่อรับรองให้อัปโหลดไปยังศูนย์นักพัฒนา Apple Apple จะสร้างใบรับรองการแจ้งเตือนจากคำขอลงนาม
ตอนนี้พวงกุญแจสำหรับการพัฒนาของคุณควรแสดงใบรับรองแบบพุชพร้อมคีย์ส่วนตัวภายใต้ใบรับรองของฉันในการเข้าถึงแบบพวงกุญแจ:
ณ จุดนี้พวงกุญแจการพัฒนาควรได้รับการสำรองไว้ หลายทีมเก็บใบรับรองพุชไว้ในไดรฟ์ USB ที่ปลอดภัยกระทำการควบคุมเวอร์ชันภายในหรือใช้โซลูชันสำรองข้อมูลเช่น Time Machine พวงกุญแจการพัฒนาสามารถใช้ร่วมกันระหว่างสมาชิกในทีมที่แตกต่างกันเพราะมันไม่ได้มีข้อมูลประจำตัวการลงนามรหัสส่วนบุคคลใด ๆ
~/Library/Keychains
ไฟล์พวงกุญแจที่ตั้งอยู่ใน
บริการพุชจากบุคคลที่สามบางรายจำเป็นต้องมีใบรับรองในรูปแบบ Privacy Enhanced Mail (PEM) ในขณะที่บริการอื่น ๆ จำเป็นต้องใช้มาตรฐานการเข้ารหัสลับคีย์สาธารณะ # 12 (PKCS12 หรือ P12) ใบรับรองที่ดาวน์โหลดจาก Apple สามารถใช้เพื่อส่งออกใบรับรองในรูปแบบเหล่านี้ - แต่ถ้าคุณเก็บคีย์ส่วนตัวเท่านั้น
ฉันขอแนะนำวิธีแก้ปัญหาที่ง่ายกว่านี้อีก เพียงแค่ใช้Certifire
Certifireเป็นแอปพลิเคชั่น macOS ที่สร้างใบรับรองการแจ้งเตือนแบบพุชของ Apple ด้วยการคลิกเพียงครั้งเดียวในไม่กี่วินาที
นี่คือขั้นตอน:
1. ดาวน์โหลดแอพ
2. เข้าสู่ระบบโดยใช้ข้อมูลรับรองบัญชีผู้พัฒนา Apple ของคุณ
3. เลือกแอป ID
4. คลิกปุ่ม "สร้าง"
5. คุณทำเสร็จแล้ว!
คุณจะได้รับใบรับรอง APN ในรูปแบบ. pem และในรูปแบบ. p12 ยิ่งไปกว่านั้นคุณจะได้รับการรวม. pem และ. p12 ด้วย (คีย์ + ใบรับรอง)!
ยิ่งไปกว่านั้นคุณจะได้รับใบรับรองเหล่านี้ในเวอร์ชันที่ไม่มีวลีรหัสผ่านด้วย!
นี่คือวิธีที่ฉันทำใน Windows 7 หลังจากติดตั้งOpenSSL (ลิงก์ไปที่ตัวติดตั้ง Win32 เลือกรุ่นล่าสุดไม่ใช่รุ่นที่สว่าง)
ด้วยวิธีนี้คุณจะต้อง.cer
ดาวน์โหลดไฟล์จาก Apple เท่านั้น
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
สิ่งนี้จะสร้างไฟล์ที่คุณจะต้องเพิ่มคีย์ส่วนตัวของคุณด้วย
----- BEGIN คีย์ส่วนตัว -----
MIIEuwIBADANBgkqhk .... ฯลฯ
MIIEuwIBADANBgkqhk .... ฯลฯ
MIIEuwIBADANBgkqhk .... ฯลฯ
MIIEuwIBADANBgkqhk .... ฯลฯ
----- END คีย์ส่วนตัว -----
----- เริ่มต้นใบรับรอง -----
AwIBAgwIBADAwibada .... ฯลฯ
AwIBAgwIBADAwIBADA .... ฯลฯ
AwIBAgwIBADAwibada .... ฯลฯ
----- สิ้นสุดใบรับรอง -----
แค่นั้นแหละ.
มีวิธีที่ง่ายที่สุดในการสร้างไฟล์. Pem หากคุณมีไฟล์ ap12 แล้วในการเข้าถึงห่วงโซ่คีย์
เปิดเทอร์มินัลแล้วป้อนคำสั่งด้านล่าง:
สำหรับ Devlopment openssl pkcs12 -in apns-div-cert.p12 - ออก apns-div-cert.pem -nodes -clcerts
สำหรับการผลิต openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
เปลี่ยนชื่อไฟล์ P12 ของคุณด้วยชื่อนี้: apns-div-cert.p12 ไม่เช่นนั้นคุณต้องป้อนชื่อไฟล์ของคุณแทน ขอบคุณ !!
ฉันไม่เคยจำopenssl
คำสั่งที่จำเป็นในการสร้าง.pem
ไฟล์ดังนั้นฉันจึงทำ bash script นี้เพื่อทำให้กระบวนการง่ายขึ้น:
#!/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>
?) หลังจากสร้างไฟล์ทำ a chmod +x signpem.sh
เพื่อให้สามารถเรียกใช้งานได้จากนั้นคุณสามารถเรียกใช้:
~/signpem myCertificate.p12 myCertificate.pem
และmyCertificate.pem
จะถูกสร้างขึ้น