การสร้างใบรับรอง Push notification ของ iOS
อัพเดทล่าสุด 2 ม.ค. 62
เนื่องจากมันยาวมาก และยุ่งยากมากจริงๆ เลยไม่ได้เขียนภาค 2 ตัดบทซะแค่นี้แล้วกัน

รู้สึกเนื้อหานี้ น่าจะยาวมาก คงได้จะได้แบ่งเป็น 2-3 ตอนเป็นแน่ แต่ผมจะอธิบายเน้นๆ เลยแล้วกัน

Edit เนื่องจากมันยาวมาก และยุ่งยากมากจริงๆ เลยไม่ได้เขียนภาค 2 เนื่องจาก คุณ Firebase ทำให้มันง่ายขึ้นเยอะ พี่แกเล่นคลิ้กๆ 2-3 ที ใช้ได้เลย ผมเลยไม่ได้กลับมาเขียนต่อจนจบ ดังนั้น ก็ตัดบทซะแค่นี้แล้วกัน

เริ่มการสร้างใบ CSR

ที่อื่นๆ อาจจะเริ่มสอนจากการสร้างโปรเจค สมัครนู่นนี่นั่น แต่เราจะคิดว่า คุณผ่านขั้นตอนพวกนั้นมาแล้วนะครับ เริ่มจากเรื่องนี้ก่อนเลยแล้วกัน ผมลองๆ ดูแล้ว โครตหลายขั้นตอน เลยต้องทำสรุปมาทีละขั้นก่อนเลย

เปิด Keychain Access บน Mac ขึ้นมาก่อน (พิมพ์ใน Spotlight Search เอาก็ได้)

เลือกเมนู Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.

ใส่ User email (ให้ตรงกับ developer account ของเรา) แล้วก็ common name (ผมใส่ชื่อ App ที่จะสร้าง) ชื่อ CA email ให้ว่างไว้ เพราะเราจะเลือก Saved to disk จากนั้นก็กดปุ่ม Continue ได้เลย

เลือกที่ Save ดีๆ เพราะต้องเอาไปใช้ในขั้นตอนถัดไปนะครับ

ถัดมาการขอใบรับรอง App ID

ขั้นแรก Login เข้า https://developer.apple.com ให้เรียบร้อย แล้วไปที่เมนู Identifiers > App IDs ดังรูป

คลิ้กปุ่มบวก ที่มุมซ้ายบน

จากนั้นก็ตั้งชื่อ App Name และเลือก Explicit App ID แต่มันจะสำคัญตรง Bundle ID นี่ล่ะ

มันต้องตั้งให้ตรงกับ app id ของ phonegap ของโปรเจค ของเราที่สร้างเอาไว้ด้วย (ดูในไฟล์ confgi.xml ได้ว่า เราตั้งไว้อย่างไร)

จากนั้นที่หัวข้อ App Service ให้ติดที่ Push Notifications ด้วย

จากนั้นกดปุ่ม Continue เพื่อไปขั้นตอนยืนยันที่จะสร้าง สังเกตว่าตรง Push Notifications จะเป็น Configurable นะครับ

ถ้าเรียบร้อยแล้วก็กดปุ่ม Submit เพื่อบันทึกได้เลย

เมื่อเรียบร้อยแล้วให้กลับมาที่หน้า Identifiers > App IDs อีกครั้ง แล้วเลือก ไอ้ App ที่เราเพิ่งสร้างตะกี้นี้ แล้วกดปุ่ม Edit

เลื่อนไปล่างๆ จนถึงหัวข้อ Push Notifications แล้วกดปุ่ม Create Certificate

กดปุ่มถัดไปเรื่อยๆ จนถึงหน้า ที่ให้ Upload CSR file. ก็ให้กดเลือกไฟล์ จากขั้นอตนที่แล้ว เข้าไป แล้วกดปุ่ม Generate แล้วรอซักพัก ก็จะได้ใบรับรองมาให้ Download ให้กดดาวน์โหลดเก็บไว้ ดีดี นะค่าบบ ต้องเอาไปใช้อีกหลายขั้นตอน

ทำแบบนี้ กับ Production SSL ด้วย (ที่หน้าขั้นตอนที่ 8) แล้วดาวน์โหลดมาแยกชื่อกันใช้ชัดเจนนะครับ

เอาใบรับรองมาแปลธาตุ

เริ่มจาก ไอ้ไฟล์ใบรับรอง 2 ไฟล์ ที่ได้ มาก่อนหน้านี้ ให้นำเอาไปใส่ใน Keychain Access ลากเข้าไปดื้อๆ เลยครับ

จากนั้นคลิ้กขวาที่ใบรับรองที่เพิ่มเข้าไปตะกี้นี้แล้วเลือก **Export…

มันจะให้เซฟเป็นไฟล์ .p12 ตั้งชื่อดีดี นะครับ แยกกันระหว่าง Production กับ Development

ทำแบบเดียวกันกับ Private key ของใบรับรองนั้นด้วย และที่เหลือด้วย สรุปแล้วเราจะได้ ไฟล์ .p12 มา 4 อัน

(เพียบ…)

สร้างใบรับรองด้วย OpenSSL

เปิด terminal ขึ้นมาครับ แล้วไปที่ folder ที่เก็บพวกใบที่สร้างไว้ก่อนหน้านี้ แล้วใส่คำสั่งสร้างประมาณนี้ครับ

openssl pkcs12 -clcerts -nokeys -out aps_dev-cert.pem -in aps_dev.p12
openssl pkcs12 -nocerts -out aps_dev-key.pem -in aps_dev-key.p12
openssl rsa -in aps_dev-key.pem -out aps_dev-key-noenc.pem
cat aps_dev-cert.pem aps_dev-key-noenc.pem > aps_dev.pem

คำสั่งที่ 2 ต้องใส่ Password แล้วคำสั่งที่ 3 ต้องใส่ Password ที่ได้จากคำสั่งที่สอง , และทำแบบเดียวกันนี้กับ Production ด้วยนะครับ

ทดสอบใบรับรองที่ได้มาด้วยคำสั่งนี้

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

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

คำสั่งแรก ต้องใส่ Password คำสั่งที่สองไม่ต้องใส่ และเมื่อทดสอบสำเร็จ จะได้ผลลัพธ์ แบบนี้

เป็นอันจบขั้นตอนครับ ได้ใบรับรองมาไว้ใช้

Beta Version v23.12.4 : ขออภัยเว็บกำลังก่อสร้าง (อีกแล้ว) แต่คราวนี้กำลังสร้างจริงจังละ