Apple Certificate هو مستند رقمي صادر عن Apple Developer Portal لتوقيع كود التطبيقات لأنظمة iOS وiPadOS وmacOS وtvOS وwatchOS. وفقًا لـ Apple Developer Support, 2026، الشهادات هي جزء من البنية التحتية للمفاتيح العامة (PKI) وهي ضرورية لتأكيد هوية المطور. في هذه المقالة سنتعرف على أنواع الشهادات وعملية إنشائها وإدارتها.
النقاط الرئيسية
Apple Certificate هي شهادة تشفير بتنسيق X.509 صادرة عن سلطة التصديق Apple (Apple Certificate Authority). تؤكد أن حاملها عضو مسجل في Apple Developer Program وله الحق في توقيع التطبيقات لنظام Apple البيئي. تتكون الشهادة من مفتاح عام وبيانات وصفية للمالك وتوقيع رقمي من Apple CA — يمكن لأي شخص التحقق من صحة الشهادة باستخدام الشهادة الجذرية لـ Apple المضمنة في نظام التشغيل.
تشمل بنية PKI لـ Apple ثلاثة مستويات: الشهادة الجذرية Apple Root CA، والشهادة الوسيطة (Apple Worldwide Developer Relations CA)، وشهادة المطور. Apple Worldwide Developer Relations CA توقع جميع شهادات المطورين — إذا كانت هذه الشهادة الوسيطة مفقودة في سلسلة الثقة، يُعتبر توقيع الكود غير صالح. يتم تحديث الشهادات الجذرية لـ Apple تلقائيًا عبر آلية Apple Trust Store المضمنة في iOS وmacOS.
لكل شهادة فترة صلاحية — من سنة إلى ثلاث سنوات حسب النوع. Apple Developer Program تُخطر المطور تلقائيًا قبل 30 يومًا من انتهاء الشهادة عبر البريد الإلكتروني والإشعارات الفورية. بعد انتهاء الصلاحية، لا يمكن استخدام الشهادة القديمة لتوقيع بنى جديدة — يجب إصدار شهادة جديدة؛ ومع ذلك، تستمر التطبيقات الموقعة بالشهادة المنتهية في العمل على أجهزة المستخدمين.
سلسلة الثقة تضمن أن شهادة المطور صدرت بالفعل عن Apple. يتحقق iOS من: الشهادة الجذرية Apple Root CA (مضمنة في البرنامج الثابت)، والشهادة الوسيطة Apple Worldwide Developer Relations CA، وشهادة المطور. إذا كان أي عنصر من السلسلة مفقودًا أو غير صالح، iOS يمنع تشغيل التطبيق مع خطأ في توقيع الكود. يوفر macOS أداة security للتحقق من سلسلة الثقة لأي شهادة في سلسلة المفاتيح.
تعتمد عملية توقيع الكود باستخدام Apple Certificate على التشفير غير المتماثل. المفتاح الخاص يُخزن على كمبيوتر المطور في Keychain، بينما يتم تضمين المفتاح العام في الشهادة وإرساله إلى Apple Developer Portal. عندما يوقع Xcode تطبيقًا، ينشئ ملخصًا (hash) للملف الثنائي ويشفره بالمفتاح الخاص — هذا هو التوقيع الرقمي. يقوم الجهاز بفك تشفير التوقيع باستخدام المفتاح العام من الشهادة ويقارنه بالملخص المحسوب.
تستخدم Apple خوارزمية ECDSA (Elliptic Curve Digital Signature Algorithm) بمنحنى P-256 لجميع الشهادات الصادرة بعد عام 2021. سابقًا كان يُستخدم RSA-2048. أدى الانتقال إلى ECDSA إلى زيادة سرعة التحقق من التوقيع على الأجهزة وتقليل حجم التوقيع — هذا مهم بشكل خاص للتطبيقات المحمولة، حيث يتم التحقق من التوقيع عند كل تشغيل. وفقًا لـ Apple Security Engineering (2025)، يوفر ECDSA P-256 مستوى أمان مكافئًا لـ RSA-2048 بتكاليف حسابية أقل بكثير.
بالنسبة لعمليات CI/CD، يجب تصدير الشهادة مع المفتاح الخاص إلى PKCS12 (.p12) وتخزينها في مستودع آمن. GitHub Actions وBitrise وJenkins وأنظمة CI الأخرى تدعم استيراد الشهادات عبر متغيرات البيئة أو الأسرار. بعد الاستيراد على وكيل CI، تُضاف الشهادة مؤقتًا إلى سلسلة المفاتيح وتُستخدم للتوقيع ثم تُحذف. Fastlane Match يؤتمت هذه العملية بمزامنة الشهادات بين المطورين عبر مستودع git مشفر.
شهادة Development تسمح بتوقيع التطبيقات لتشغيلها على الأجهزة الفعلية للمطور. حساب Apple ID المجاني يكفي للحصول عليها — يمكن لـ Xcode إنشاء شهادة Development تلقائيًا. شهادة Distribution تُصدر فقط لحسابات Apple Developer Program المدفوعة (99 دولارًا/السنة) وهي مطلوبة لإرسال التطبيق إلى App Store أو التوزيع Ad Hoc أو التوزيع Enterprise. يمكن أن يكون للحساب الواحد عدة شهادات Distribution — على سبيل المثال، واحدة لكل تطبيق أو لفرق مختلفة.
يوفر Apple Developer Portal عدة أنواع من الشهادات، كل منها مصمم لغرض محدد. iOS App Development — الشهادة الأساسية لتوقيع التطبيقات أثناء التطوير. Apple Distribution — الشهادة الرئيسية للنشر في App Store. Mac Development وMac Distribution — نظائرها لتطبيقات macOS. كل نوع من الشهادات يتطلب طلب (CSR) منفصل في Apple Developer Portal.
فئة منفصلة هي شهادات الإشعارات الفورية. Apple Push Notification service (APNs) تتطلب إما شهادة SSL منفصلة أو استخدام رموز المصادقة (APNs Auth Key). تُصدر شهادات SSL الخاصة بـ APNs بشكل منفصل لبيئتي Development (Sandbox) وProduction وترتبط بمعرف تطبيق (App ID) محدد. APNs Auth Key هو نهج أكثر حداثة: مفتاح واحد (.p8) يخدم جميع تطبيقات الحساب، مما يبسط الإدارة.
| نوع الشهادة | الغرض | فترة الصلاحية |
|---|---|---|
| iOS App Development | توقيع للاختبار على الأجهزة | سنة واحدة |
| Apple Distribution | النشر في App Store وAd Hoc | سنة واحدة |
| Mac Development | توقيع تطبيقات macOS للتطوير | سنة واحدة |
| Mac Distribution | النشر في Mac App Store | سنة واحدة |
| APNs SSL (Sandbox) | الإشعارات الفورية في بيئة الاختبار | 1-3 سنوات |
| APNs SSL (Production) | الإشعارات الفورية في الإنتاج | 1-3 سنوات |
يبدأ إنشاء Apple Certificate بتوليد طلب توقيع الشهادة (CSR) عبر Keychain Access على macOS. Keychain Access ينشئ زوج مفاتيح: المفتاح الخاص يبقى في السلسلة، بينما يُرسل CSR إلى Apple Developer Portal. بعد التحقق من الهوية، توقع Apple على CSR وتصدر شهادة جاهزة (.cer) يجب تنزيلها وتثبيتها بنقرة مزدوجة.
لإدارة مشاريع وفرق متعددة، توفر Apple إمكانية إنشاء شهادات لمعرفات فريق (Team ID) مختلفة. يمكن للمطور أن يكون عضوًا في عدة فرق (عبر Apple Developer Program — App Store Connect)، ويتم إصدار شهادات منفصلة لكل فريق. Xcode يبدّل الشهادات تلقائيًا بناءً على الفريق المحدد في إعدادات Signing & Capabilities.
إبطال الشهادة هو عملية حرجة: جميع التطبيقات الموقعة بهذه الشهادة تتوقف عن التثبيت على الأجهزة الجديدة (المثبتة بالفعل تستمر في العمل). Apple Developer Portal يسمح بإبطال أي شهادة في قسم Certificates. أسباب الإبطال: اختراق المفتاح الخاص، مغادرة المطور للفريق، انتهاك شروط Apple Developer Program. بعد الإبطال، يجب إصدار شهادة جديدة وإعادة توقيع جميع البنى النشطة.
Keychain (سلسلة المفاتيح) هو مخزن نظام macOS للشهادات والمفاتيح الخاصة وكلمات المرور. جميع شهادات Apple والمفاتيح الخاصة المقابلة لها تُخزن في سلسلة تسجيل الدخول (login.keychain) للمستخدم. يصل Xcode إلى Keychain عند توقيع الكود، ويختار تلقائيًا الشهادة المناسبة حسب نوع البنية. لتشخيص مشكلات التوقيع، من المفيد استخدام أداة Keychain Access المضمنة (مجلد /Applications/Utilities).
يتم تصدير الشهادة لـ CI/CD عبر Keychain Access: حدد الشهادة والمفتاح الخاص المقابل (يجب أن يكونا موسعين في صف واحد)، انقر بزر الماوس الأيمن واختر Export. التنسيق هو PKCS12 (.p12). أثناء التصدير، سيطلب Keychain كلمة مرور لحماية الملف — ستكون كلمة المرور هذه مطلوبة عند الاستيراد على خادم CI. بدون المفتاح الخاص، الشهادة المصدرة غير مفيدة للتوقيع — يمكن استخدامها فقط للتحقق من الكود الموقع بالفعل.
مثال لأمر استيراد شهادة في سلسلة مفاتيح وكيل CI باستخدام أداة security:
# إنشاء سلسلة مفاتيح مؤقتة
security create-keychain -p "temp" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "temp" build.keychain
# استيراد الشهادة من .p12
security import certificate.p12 -k build.keychain \
-P "${P12_PASSWORD}" -T /usr/bin/codesign
# تكوين سياسة التوقيع
security set-key-partition-list -S apple: -s \
-k "temp" build.keychain
Security create-keychain ينشئ سلسلة مفاتيح مؤقتة معزولة عن سلسلة المستخدم. هذا مهم لـ CI لتجنب تلويث سلسلة مفاتيح النظام للوكيل. العلامة -T /usr/bin/codesign تسمح لأداة codesign بالوصول إلى المفاتيح دون طلب كلمة مرور — وإلا فإن التوقيع التلقائي في خط الأنابيب سيتوقف عند حوار. أمر set-key-partition-list ضروري للتوافق مع متطلبات توقيع الكود في macOS في الوضع الآلي.
الخطأ الأكثر شيوعًا هو “No signing certificate found” عند البناء في Xcode. يحدث عندما تفتقر Keychain إلى شهادة بمفتاح خاص يطابق نوع البناء المحدد. الحل: تحقق من Keychain Access لوجود الشهادة، وقم بتنزيلها من Apple Developer Portal وتثبيتها. إذا كان المفتاح الخاص مفقودًا (كمبيوتر قديم، إعادة تثبيت النظام)، يجب إبطال الشهادة القديمة وإصدار واحدة جديدة.
الخطأ “Valid signing certificate not found” في CI/CD يحدث إذا لم يكن لدى الوكيل الشهادات الوسيطة لـ Apple مثبتة (Apple Worldwide Developer Relations CA). Apple تضمن الشهادات الوسيطة في السلسلة عند تنزيل شهادة المطور، ولكن قد تكون مفقودة عند التصدير اليدوي .p12. الحل — قم بتنزيل الشهادات الوسيطة من موقع Apple Certificate Authority وتثبيتها في سلسلة مفاتيح وكيل CI.
مشكلة الشهادة منتهية الصلاحية تظهر بخطأ “This certificate has an invalid issuer” عند التوقيع. يعرض Apple Developer Portal حالة كل شهادة وتاريخ انتهائها. إذا كان التطبيق منشورًا بالفعل في App Store بشهادة منتهية، فإنه يستمر في العمل — يستخدم App Store شهادة Apple الخاصة به للتوزيع. ومع ذلك، لرفع بناء جديد، يلزم وجود شهادة Distribution سارية المفعول. Fastlane يتضمن أمر cert لإنشاء وتجديد الشهادات تلقائيًا.
الأسئلة الشائعة
لا، يتم إصدار أنواع مختلفة من الشهادات لـ iOS وmacOS — iOS App Development وMac Development. شهادة Apple Distribution أيضًا مفصولة حسب النظام الأساسي. عند إنشاء شهادة في Apple Developer Portal، يجب تحديد النظام الأساسي المستهدف — لا توجد شهادة عالمية لجميع الأنظمة.
يجب إبطال الشهادة القديمة في Apple Developer Portal عبر Certificates, Identifiers & Profiles. ثم إنشاء CSR جديد عبر Keychain Access وإصدار شهادة جديدة. جميع التطبيقات الموقعة بالشهادة القديمة ستتطلب إعادة توقيع وإعادة رفع إلى App Store إذا كنت بحاجة لإصدار تحديث.
حساب Apple Developer Program الواحد يسمح بما لا يزيد عن شهادتي Distribution وعدد غير محدود من شهادات Development في نفس الوقت. حسابات Enterprise لها حدود منفصلة. إذا تم الوصول إلى حد شهادات Distribution، يجب إبطال إحدى الشهادات الحالية قبل إنشاء جديدة.
استخدم أداة security: security find-identity -v -p basic يسرد جميع الشهادات في سلسلة المفاتيح مع تواريخ انتهاء الصلاحية. لشهادة محددة، حدد تجزئة SHA-1 الخاصة بها: security find-certificate -c “Developer” -p | openssl x509 -noout -enddate.
نعم، الشهادات مرتبطة بحساب Apple Developer محدد (Team ID). عند تغيير الحساب، تصبح الشهادات القديمة غير صالحة لمعرف الفريق الجديد. Xcode عند تغيير الحساب في Accounts Preferences، يطلب تلقائيًا إنشاء شهادات جديدة للفريق الجديد.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.