Sign .mobileconfig สำหรับอุปกรณ์ Apple

Pao Payungsak Klinchampa
Next-Hop Co., Ltd.
Published in
2 min readApr 16, 2020
Ref : https://apps.apple.com/th/app/apple-configurator-2/id1037126344?l=th&mt=12

ในบทความนี้เราจะมา sign file .mobileconfig ที่ใช้ในการ add config บางอย่างลงไปในอุปกรณ์ Apple ครับ ไม่ว่าจะเป็น VPN , WiFi และการตั้งค่าอื่นๆ (ลองโหลดเเอป Apple Configurator มาเล่นดูครับ จะได้รู้ว่าเราจะ add config อะไรได้บ้าง)

ส่วนตัวผมเองที่ใช้อยู่จะเป็น WiFi ครับ พอเรา add .mobileconfig ลงไปเเล้ว เวลาเราอยู่ในพื้นที่ที่มีสัญญาณ WiFi ที่ตรงตาม SSID ที่เราตั้งใน .mobileconfig มันก็จะต่อ WiFi ให้เราได้เลย โดยที่เราไม่ต้องไปป้อน User name / Password และอีกอย่างก็จะเป็นการเชื่อมต่อ 802.1x on wired อันนี้ผมเอาไปใช้กับ Mac Mini ที่ต่ออยู่กับ Switch ที่รองรอง 802.1x on wired (โม้ว่าเป็น Cisco 555+)

ตัวอย่าง Wired/Wireless config ของผมเอง

สำหรับ .mobileconfig นี้มักถูกนิยมนำไปใช้กับองค์กร เช่นกรณีองค์กรซื้อ iPad มาให้พนักงานใช้ ทางฝ่าย IT ก็สามารถเตรียม .mobileconfig เพื่อตั้งค่าต่างๆตาม Policy ขององค์กร แล้วค่อยส่งมอบให้ End user ต่อไป

แล้วทำไมต้อง Sign ??

เนื่องจากว่า file .mobileconfig เราสามารถเอาไปเปิดกับ Text Editor ได้ครับ อ่านได้เลย โดยจะอยู่ในรูปของ XML ซึ่งทำให้ user ที่มีความรู้หน่อย อาจดัดแปลง เเก้ไขได้ เราก็เลยต้อง sign ซึ่งจะทำให้ .mobileconfig นั้นไม่สามารถเเก้ไขได้ (เอาไปเปิดกับ Text editor ก็อ่านไม่รู้เรื่อง เจอเลขฐาน 16 เต็มไปหมด)

ตัวอย่าง .mobileconfig ที่ยังไม่ได้ Sign
ตัวอย่าง Certificate ที่ Signed เเล้ว

และอีกอย่างคือ เป็นการรับรองด้วยว่า .mobileconfig นั้นๆมาจากองค์กรตัวจริง

สำหรับ Cerificate ที่ใช้ในการ Sign จะต้องรองรับ Code Signing ด้วยครับ นั่นหมายความว่า Certificate ที่เราซื้อมาเพื่อทำ HTTPS โดยทั่วไป จะเอามาใช้ไม่ได้ ส่วนเรื่องราคา ก็เเรงอยู่พอสมควร

แต่ในองค์การที่ไม่สามารถจ่ายตรงส่วนนี้ได้ ก็อาจพิจารณาสร้าง Self sign cert เเล้วเอา Root CA ติดตั้งลงไปในอุปกรณ์ เพื่อให้มัน trust

หาก gen cert เอง ก็ให้กำหนด Policy นี้ด้วยครับ Add codeSigning ลงไปที่ extendedKeyUsage ของ file config openssl

[v3_req]extendedKeyUsage = codeSigning

ส่วนคำสั่งที่ใช้ในการ sign จะเป็นคำสั่งตามนี้ครับ

openssl smime \
-sign \
-signer example-code-signer.crt \
-inkey example-code-signer.key \
-certfile root-ca.crt \
-nodetach \
-outform der \
-in Config.mobileconfig \
-out Config_signed.mobileconfig

- signer ให้กำหนด file ของ certificate ที่จะเอาไป sign
- inkey คือ private key ที่สร้างมาตอนสร้าง .csr ของ cert
- certfile คือ certificate ของ root ca หรืออาจเป็น intermediate ca
- in คือ file ที่ save มาจาก Apple Configurator
- out คือ file ที่ผ่านการ sign เรียบร้อยเเล้ว

รันคำสั่งด้านบน เราก็จะได้ file ที่ sign เรียบร้อยครับ หากใช้ self signed cert ก็ให้เอา Root CA ติดตั้งลงไปในอุปกรณ์ด้วย

หวังว่าบทความนี้จะมีประโยชน์นะครับ ใครใช้ .mobileconfig อยู่เเล้ว เพื่อกำหนดค่า config ต่างๆ ก็ลองเอา cert มา sign กันด้วยนะครับ

แล้วเจอกันในบทความต่อไป สวัสดีครับ

--

--