bg-tutorials

كيفية إنشاء CSR على Android

يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) لنظام Android باستخدام أداة Java keytool.

لا يقوم نظام Android بإنشاء طلبات CSR لشهادات TLS الصادرة عن جهة تصديق عامة على الهاتف نفسه: فالشهادة الصادرة عن جهة تصديق عامة تُصدَر لخادم (أو لجهاز يتحكم فيه المستخدم)، بينما تستهلك تطبيقات ومتصفحات Android هذه الشهادة. تنتج عملية keytool الموضحة أدناه طلبًا بصيغة PKCS #10 من مخزن مفاتيح Java، وهو المسار الصحيح عندما تحتاج إلى شهادة TLS يثق بها تطبيق Android أو موقع ويب موجّه للأجهزة المحمولة.

اختر الإجراء المناسب لحالتك

يمكن أن تعني عبارة “CSR لنظام Android” ثلاثة أشياء مختلفة. تأكد من أنك في الصفحة الصحيحة قبل تنفيذ أي أوامر:

  • شهادة TLS لخادم ستتواصل معه عملاء Android. هذه هي الحالة الأكثر شيوعًا، وهي ما تغطيه بقية هذه الصفحة. استخدم keytool (أدناه) أو أنشئ CSR خارج الخادم باستخدام أداة إنشاء CSR الخاصة بنا، ثم ثبّت الشهادة الصادرة على خادم الويب أو بوابة API أو وسيط MQTT الذي يتصل به تطبيقك.
  • مفتاح توقيع لملف APK أو AAB. يستخدم توقيع تطبيقات Android مفتاح RSA أو EC ذاتي التوقيع في مخزن مفاتيح Java: لا توجد جهة تصديق عامة معنية ولا يوجد CSR لتقديمه. أنشئ المفتاح باستخدام keytool من معالج Build > Generate Signed Bundle / APK في Android Studio (أو شغّل keytool يدويًا)، ثم سجّل المفتاح مع خدمة Google Play App Signing. لا تطلب شهادة عامة لهذا الغرض.
  • شهادة جهاز يتم توفيرها عبر MDM أو EMM. تصدر منصة Android Enterprise شهادات عميل للأجهزة المُدارة عبر SCEP أو EST أو Managed Configurations API. يتم إنشاء CSR وتثبيت الشهادة تلقائيًا بواسطة نظام MDM. لا توجد خطوة يدوية باستخدام keytool.

إذا كانت حالتك هي الحالة الأولى، فتابع. تتكون العملية من جزأين: إنشاء مخزن مفاتيح PKCS12 يحتوي على المفتاح الخاص، ثم تصدير CSR من ذلك المخزن.

ما الذي ستحتاجه

  • تثبيت Java (JDK أو JRE) بحيث يكون أمر keytool متاحًا في PATH لديك. تأكد من ذلك بتشغيل keytool -help. في نظام Windows، يجب أن يكون مجلد bin الخاص بـ Java موجودًا في PATH، أو يمكنك تشغيل keytool مباشرة من مجلد bin الخاص بـ JDK.
  • اسم النطاق الكامل المؤهل (FQDN) الدقيق الذي تريد تأمينه (على سبيل المثال www.yoursite.com)، بالإضافة إلى أي أسماء مضيف أخرى تريدها على نفس الشهادة (لقائمة Subject Alternative Name).
  • التفاصيل القانونية لمؤسستك (الدولة، الولاية، المدينة، اسم المؤسسة) للاسم المميز (Distinguished Name). استخدم القيم بالضبط كما تظهر في السجلات التجارية العامة: فجهة التصديق سترفض أي اختلاف.

الخطوة 1: إنشاء مخزن المفاتيح والمفتاح الخاص

إذا كنت قد أنشأت CSR الخاص بك بالفعل، تخطَّ إلى تقديم CSR ثم إلى تعليمات تثبيت SSL في Android.

افتح طرفية (أو موجه الأوامر في Windows) وشغّل أمر keytool أدناه. ينشئ هذا الأمر مخزن مفاتيح جديدًا بصيغة PKCS12، ويولّد زوج مفاتيح RSA بطول 2048 بت داخله، ويخزّن المفتاح تحت الاسم المستعار الذي تختاره. كانت PKCS12 هي صيغة مخزن المفاتيح الافتراضية منذ JDK 9؛ أما الصيغة القديمة JKS فهي مهجورة ويجب تجنبها للمفاتيح الجديدة.

keytool -genkeypair 
  -alias myalias 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yoursite.p12 
  -validity 825

في نظام Windows، يبدو نفس الأمر في سطر واحد كالتالي (لاحظ المسار المطلق حتى تتمكن من العثور على الملف مرة أخرى):

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore C:certsyoursite.p12 -validity 825

وظيفة كل خيار:

  • -alias myalias: اسم الإدخال داخل مخزن المفاتيح. اختر اسمًا تتذكره ودوّنه. يجب عليك استخدام نفس هذا الاسم المستعار بالضبط عند تصدير CSR ومرة أخرى عند استيراد الشهادة الموقّعة.
  • -keyalg RSA -keysize 2048: مفتاح RSA بطول 2048 بت هو الحد الأدنى العام الحالي الذي تقبله جميع جهات التصديق. استخدم 3072 بت لمفتاح أطول عمرًا، أو أنشئ مفتاح ECDSA باستخدام -keyalg EC -groupname secp256r1 للحصول على مفتاح أصغر وأسرع (كل جهة تصديق حديثة تصدر شهادات مبنية على ECDSA P-256 وP-384).
  • -storetype PKCS12: يفرض استخدام صيغة مخزن المفاتيح الحديثة PKCS12. الامتداد المطابق لها هو .p12 (أو .pfx).
  • -keystore yoursite.p12: ملف مخزن المفاتيح المراد إنشاؤه. استبدل الاسم بشيء ستتذكره، واحرص على حماية الملف: فهو يحتوي على مفتاحك الخاص.
  • -validity 825: مدة صلاحية الشهادة النائبة ذاتية التوقيع الموجودة داخل مخزن المفاتيح. سيتم استبدالها لاحقًا بالشهادة الموقّعة من جهة التصديق، لذا هذه القيمة لا تؤثر على عمر الشهادة في بيئة الإنتاج.

بعد ذلك يطلب keytool كلمة مرور مخزن المفاتيح. اختر كلمة مرور قوية واحفظها في مدير الأسرار الخاص بك. ستحتاجها في كل أمر keytool لاحق ولأي خادم يستخدم مخزن المفاتيح. مع مخازن مفاتيح PKCS12، تكون كلمة مرور المفتاح مطابقة لكلمة مرور مخزن المفاتيح، لذا لا توجد سوى كلمة مرور واحدة تحتاج إلى تذكرها.

الخطوة 2: إدخال تفاصيل مؤسستك (DN)

يطلب keytool الآن الاسم المميز (Distinguished Name – DN): حقول الهوية التي ستظهر في CSR. أجب عن كل استعلام بالقيمة القانونية الدقيقة لمؤسستك. استخدم أحرف ASCII القياسية فقط: فالأحرف غير اللاتينية تتسبب في فشل الطلب. علامات الترقيم مهمة أيضًا، حيث تقارن جهة التصديق قيمك بالسجلات التجارية العامة.

  • ما هو اسمك الأول واسم عائلتك؟ هذه هي صياغة keytool للاسم الشائع (Common Name – CN). أدخل FQDN الدقيق الذي تريد تأمينه (على سبيل المثال www.yoursite.com)، أو حرف بدل مثل *.yoursite.com. لا تُدخل اسم شخص.
  • ما هو اسم الوحدة التنظيمية الخاصة بك؟ ألغى منتدى CA/Browser سمة organizationalUnitName اعتبارًا من 2022-09-01، وتقوم جهات التصديق العامة بإزالتها من الشهادات الصادرة. لاحظ أن الضغط على Enter لا يترك الحقل فارغًا: يستبدله keytool بقيمته الافتراضية الخاصة، فينتهي الأمر بأن يحمل DN القيمة OU=Unknown وتنتقل هذه القيمة إلى CSR. لحذف السمة فعليًا، تخطَّ الاستعلامات ومرر DN مباشرة باستخدام -dname مع استبعاد OU من السلسلة.
  • ما هو اسم مؤسستك؟ أدخل الاسم القانوني الكامل لشركتك، تمامًا كما هو مسجل (على سبيل المثال Your Company LLC). مطلوب لشهادات OV وEV؛ أما بالنسبة لشهادات التحقق من النطاق (DV)، فيتم تجاهل هذه القيمة، لذا تصلح أي قيمة نائبة قصيرة.
  • ما هو اسم مدينتك أو موقعك؟ اكتب اسم المدينة الكامل حيث تم تسجيل شركتك (على سبيل المثال Seattle، وليس SEA).
  • ما هو اسم ولايتك أو مقاطعتك؟ أدخل اسم الولاية أو المقاطعة الكامل (على سبيل المثال California، وليس CA).
  • ما هو رمز الدولة المكوّن من حرفين لهذه الوحدة؟ أدخل رمز ISO 3166-1 alpha-2 المكوّن من حرفين (على سبيل المثال US، GB، DE). راجع قائمة ISO الرسمية إذا لم تكن متأكدًا.

يطبع keytool DN المُجمَّع ويسأل Is CN=…, OU=…, O=…, L=…, ST=…, C=… correct? اكتب yes واضغط Enter للتأكيد. إذا لاحظت خطأً إملائيًا، اكتب no ويعيد keytool تشغيل الاستعلامات.

الخطوة 3: تصدير CSR مع اسم بديل للموضوع (SAN)

الآن قم بتصدير CSR باستخدام keytool -certreq. تتحقق كل جهة تصديق عامة من اسم المضيف مقابل امتداد Subject Alternative Name (SAN)، وليس مقابل الاسم الشائع (Common Name) (توقفت المتصفحات ومكتبات TLS الحديثة عن التحقق من CN منذ سنوات)، لذا أدرج SAN حتى لو كان لديك اسم مضيف واحد فقط. استخدم نفس الاسم المستعار الذي حددته في الخطوة 1:

keytool -certreq 
  -alias myalias 
  -file certreq.csr 
  -keystore yoursite.p12 
  -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com

في نظام Windows، نفس الأمر في سطر واحد:

keytool -certreq -alias myalias -file certreq.csr -keystore C:certsyoursite.p12 -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com

أضف إدخال DNS: واحدًا لكل اسم مضيف عند إنشاء شهادة متعددة النطاقات (افصل بينها بفواصل بدون مسافات). بالنسبة لحرف البدل، استخدم DNS:*.yoursite.com. يطلب keytool كلمة مرور مخزن المفاتيح، ثم يكتب CSR إلى ملف certreq.csr في دليلك الحالي.

الخطوة 4: فتح CSR وتقديمه إلى جهة التصديق

افتح ملف certreq.csr في أي محرر نصوص (Notepad أو TextEdit أو nano أو vim). يمكنك أيضًا طباعته على الطرفية:

cat certreq.csr

في موجه أوامر Windows:

type certreq.csr

سترى كتلة تبدو كالتالي:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----

حدد الكتلة بأكملها، بما في ذلك سطري BEGIN NEW CERTIFICATE REQUEST وEND NEW CERTIFICATE REQUEST (بعض جهات التصديق تسميهما BEGIN CERTIFICATE REQUEST / END CERTIFICATE REQUEST: كلا التسميتين مقبولتان). انسخها والصقها في حقل CSR في نموذج طلبك.

تحقق من CSR قبل تقديمه (اختياري)

يستحق الأمر التأكد من الاسم الشائع وإدخالات SAN وحجم المفتاح قبل إرسال الطلب إلى جهة التصديق. يطبع keytool نفس المعلومات مقابل إدخال مخزن المفاتيح:

keytool -printcertreq -file certreq.csr

هل تفضل أداة عبر الإنترنت؟ الصق محتوى الطلب في أداة فك تشفير CSR من SSL Dragon لقراءة الموضوع وقائمة SAN ومعلمات المفتاح العام. تأكد من أن الاسم الشائع يطابق اسم المضيف الذي سيستخدمه العملاء، وأن كل اسم مطلوب يظهر ضمن قائمة Subject Alternative Name.

هل سيثق نظام Android بالشهادة الصادرة؟

نعم، بالنسبة لأي شهادة موقّعة من جهة تصديق موثوقة عامة. يأتي نظام Android مزودًا بمخزن نظام للشهادات الجذرية يعكس قوائم الثقة الرئيسية للمتصفحات، لذا فإن الشهادة الصادرة تحت أحد هذه الجذور تكون موثوقة لدى Chrome وWebView وأي تطبيق يستخدم مخزن ثقة النظام، دون الحاجة لأي إعداد إضافي.

هناك تحذيران يجدر معرفتهما إذا كنت تقوم أيضًا بتثبيت الشهادة (أو جذر جهة تصديق خاصة) على الجهاز نفسه:

  • يتم تجاهل جهات التصديق المثبتة من قبل المستخدم من قبل التطبيقات في Android 7 وما بعده. منذ Android 7 (Nougat)، يُثق افتراضيًا بمخزن النظام فقط من قبل حركة مرور التطبيقات، ويتجاهل متصفح Google Chrome أيضًا جهات التصديق المثبتة من قبل المستخدم. إذا كان تطبيقك يجب أن يثق بجهة تصديق خاصة، يتعين على المطور الاشتراك في ذلك من خلال إعداد أمان الشبكة (network security configuration) الذي يتضمن <certificates src="user" />. لا تحتاج شهادات جهات التصديق العامة لهذا الإجراء: فهي موجودة بالفعل في مخزن النظام.
  • ثبّت المرجع (pin) لمعرِّف ثابت، وليس لشهادة واحدة. إذا كنت تنفذ تثبيت الشهادة (certificate pinning) في تطبيقك، فثبّت المرجع لتجزئة SPKI للمفتاح العام أو لجهة التصديق المُصدِرة، وليس لشهادة ورقية محددة. وإلا فإن عملية التجديد التالية ستمنع المستخدمين من الوصول.

الخطوات التالية

بعد أن تتحقق جهة التصديق من CSR وتصدر شهادتك، استورد الشهادة الصادرة مرة أخرى إلى نفس مخزن المفاتيح (تحت نفس الاسم المستعار)، ثم انشر مخزن المفاتيح على الخادم الذي ستصل إليه عملاء Android. راجع دليل تثبيت SSL لنظام Android الخاص بنا لمعرفة خطوات التثبيت على الجهاز، أو أدلة التثبيت الخاصة بكل منصة ضمن كيفية تثبيت شهادة SSL إذا كان النظام الخلفي لديك يعمل على Tomcat أو JBoss أو Nginx أو خادم آخر.

وفِّر 10% على شهادات SSL عند الطلب اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

كاتب محتوى متمرس متخصص في شهادات SSL. تحويل موضوعات الأمن السيبراني المعقدة إلى محتوى واضح وجذاب. المساهمة في تحسين الأمن الرقمي من خلال السرد المؤثر.