تثبت شهادة توقيع الكود من قام بنشر برنامج معين وتُظهر أن الكود لم يتم تغييره منذ توقيعه. لطلب شهادة من هذا النوع، يجب عليك إنشاء CSR (طلب توقيع الشهادة)، وهو كتلة النص المُرمّز التي تستخدمها الجهة المُصدّرة للشهادات (CA) للتعرّف عليك وإصدار الشهادة. تتبع طلبات CSR لتوقيع الكود قواعد مختلفة عن تلك التي تُنشئها لموقع ويب، وقد تغيّرت هذه القواعد في عام 2023. يشرح هذا الدليل العملية الحالية والطرق التي لا تزال معمولاً بها.
يجب أن يُخزَّن المفتاح الخاص على جهاز عتادي
منذ 1 يونيو 2023، تُلزم المتطلبات الأساسية لتوقيع الكود الصادرة عن منتدى CA/Browser بأن يتم إنشاء وتخزين المفتاح الخاص لكل شهادة توقيع كود موثوقة علنًا على جهاز عتادي يستوفي معيار FIPS 140-2 Level 2، أو Common Criteria EAL4+، أو معيارًا مكافئًا. ينطبق هذا على الشهادات القياسية (تحقق المؤسسة وتحقق الأفراد) وعلى شهادات التحقق الموسّع (EV) على حد سواء. كانت شهادات توقيع الكود من نوع EV تتطلب أجهزة عتادية قبل هذا التاريخ بالفعل؛ وقد وسّع تغيير 2023 نفس القاعدة لتشمل الشهادات القياسية أيضًا.
النتيجة العملية لذلك مهمة: لم يعد المفتاح الخاص وطلب CSR المُنشآن بالكامل في البرمجيات، أو في متصفح، أو في ملف عادي على حاسوب محمول أو خادم، مقبولين لشهادة توقيع كود موثوقة علنًا. توقفت الجهات المُصدّرة للشهادات عن دعم إنشاء المفاتيح عبر المتصفح وتسليم ملفات .pfx القابلة للتنزيل لهذه المنتجات. يجب أن ينشأ المفتاح، ويبقى، على جهاز متوافق. وهذا يترك أمامك طريقين صالحين:
- رمز عتادي مُهيَّأ مسبقًا من الجهة المُصدّرة للشهادات. تُنشئ الجهة المُصدّرة زوج المفاتيح وطلب CSR مباشرة على رمز USB معتمد، وتُثبّت الشهادة الصادرة عليه، وتشحن لك الرمز. تقوم بالتوقيع بينما الرمز متصل بجهازك. مع هذه الطريقة، لن تُنشئ طلب CSR بنفسك.
- وحدة HSM الخاصة بك أو وحدة HSM سحابية، مع شهادة إثبات (attestation). إذا كنت تُشغّل بالفعل وحدة أمان عتادية متوافقة (Hardware Security Module) أو وحدة HSM سحابية مثل AWS CloudHSM أو Azure Dedicated HSM أو Google Cloud HSM، فإنك تُنشئ المفتاح وطلب CSR على ذلك الجهاز وتُقدّم ملف إثبات يُثبت للجهة المُصدّرة أن المفتاح تم إنشاؤه على جهاز متوافق ولا يمكن استخراجه منه.
يتحدد الطريق الذي تختاره عند إتمام الطلب. للمقارنة بين الطريقتين جنبًا إلى جنب، راجع طرق تسليم شهادة توقيع الكود.
الخيار 1: الرمز مع الشحن (تُنشئ الجهة المُصدّرة طلب CSR)
هذا هو الطريق الذي يختاره معظم الأفراد والفرق الصغيرة، لأنه لا يتطلب أي جهاز عتادي خاص بك. عندما تختار “الرمز مع الشحن” عند إتمام الطلب، تتولى الجهة المُصدّرة إنشاء المفتاح وإعداد طلب CSR على رمز معتمد من جانبها، ثم تُرسل لك الرمز مع الشهادة مُثبَّتة عليه مسبقًا. لن تحتاج إلى لصق أي طلب CSR في نموذج الطلب.
ما تفعله بدلًا من ذلك:
- إتمام خطوات التحقق التي تطلبها الجهة المُصدّرة للشهادات (التحقق من المؤسسة أو الهوية).
- انتظار وصول الرمز العتادي الفعلي.
- تثبيت برامج تشغيل الرمز (عادةً SafeNet Authentication Client) وتوقيع برنامجك بينما الرمز متصل.
الخيار 2: إنشاء طلب CSR على وحدة HSM أو الرمز الخاص بك
إذا كنت تملك بالفعل جهازًا عتاديًا متوافقًا، فإنك تُنشئ زوج المفاتيح وطلب CSR على ذلك الجهاز وتُقدّم ملف إثبات مطابق. تختلف الخطوات الدقيقة باختلاف الجهاز، لذا اتبع الدليل الخاص بجهازك أو الوثائق الرسمية لمزوّدك:
بالنسبة لوحدات HSM السحابية (AWS CloudHSM وAzure Dedicated HSM وGoogle Cloud HSM)، أنشئ المفتاح داخل وحدة HSM، ثم صدّر طلب CSR وملف الإثبات الذي تُنشئه المنصة، وقدّم كلاهما إلى الجهة المُصدّرة للشهادات خلال الطلب.
هناك بعض التفاصيل التي تنطبق على جميع طلبات CSR المدعومة بالأجهزة العتادية:
- استخدم مفتاح RSA بحجم لا يقل عن 3072 بت، أو مفتاح ECDSA مكافئ، كما تُحدد المتطلبات الأساسية.
- اجعل المفتاح غير قابل للتصدير بحيث لا يمكنه مغادرة الجهاز.
- أنشئ الإثبات في نفس وقت إنشاء المفتاح. سيتم رفض أي طلب CSR بدون إثبات صالح.
أين تقف طرق OpenSSL وJava Keytool وMMC وCertReq وKeychain اليوم
قد تكون رأيت تعليمات قديمة تُنشئ طلب CSR لتوقيع الكود باستخدام OpenSSL، أو أداة keytool الخاصة بجافا، أو Microsoft Management Console (MMC)، أو أمر certreq في ويندوز، أو Keychain Access على macOS. في حد ذاتها، تُنشئ هذه الأدوات المفتاح في البرمجيات، لذا لا يُعتبر طلب CSR المُنشأ بهذه الطريقة صالحًا لشهادة توقيع كود موثوقة علنًا اليوم.
لا تزال لهذه الأدوات مكانة عندما تُوجَّه إلى جهاز عتادي متوافق بدلًا من مخزن مفاتيح برمجي. على سبيل المثال، يمكن لـ OpenSSL إنشاء طلب CSR مقابل وحدة HSM من خلال وحدة PKCS#11، ويمكن لـ CertReq أو MMC إنشاء طلب يستخدم مزوّد تخزين مفاتيح عتادي. استخدم هذه المراجع فقط في هذا السياق، وارفق دائمًا الطلب بشهادة إثبات من الجهاز:
- إنشاء طلب CSR لتوقيع الكود باستخدام OpenSSL
- إنشاء طلب CSR لتوقيع الكود باستخدام Java Keystore
- إنشاء طلب CSR لتوقيع الكود باستخدام CertReq
- إنشاء طلب CSR لتوقيع الكود باستخدام Microsoft Management Console
- إنشاء طلب CSR لتوقيع الكود باستخدام macOS Keychain Access
فحص محتويات طلب CSR الخاص بك
قبل تقديم طلب CSR، تأكّد من صحة تفاصيل الموضوع (subject). إذا كان OpenSSL متوفرًا لديك، فقم بفك تشفير الطلب محليًا وقراءته كنص عادي:
openssl req -noout -text -in codesigning.csr
راجع اسم المؤسسة أو الاسم الشائع وحجم المفتاح في المخرجات. لا يُعد فاحص طلب CSR القياسي لمواقع الويب الأداة المناسبة هنا، لأن طلب CSR لتوقيع الكود مرتبط بجهاز عتادي ويتم التحقق منه عبر شهادة الإثبات وليس عبر فحص HTTPS علني.
الأسئلة المتكررة
أحيانًا. إذا طلبت “الرمز مع الشحن”، فإن الجهة المُصدّرة للشهادات تُنشئ المفتاح وطلب CSR على الرمز نيابةً عنك، فلا تحتاج إلى إنشاء طلب CSR بنفسك. وإذا كنت تستخدم وحدة HSM الخاصة بك أو وحدة HSM سحابية، فإنك تُنشئ طلب CSR على ذلك الجهاز العتادي وتُقدّمه مع ملف إثبات. في كل الحالات، يجب أن يُنشأ المفتاح على جهاز عتادي متوافق.
تُلزم المتطلبات الأساسية لتوقيع الكود الصادرة عن منتدى CA/Browser بمفاتيح محمية بالأجهزة العتادية منذ 1 يونيو 2023. يجب إنشاء المفتاح الخاص وتخزينه على جهاز يستوفي معيار FIPS 140-2 Level 2 أو Common Criteria EAL4+ أو معيارًا مكافئًا. المفتاح المُنشأ في البرمجيات لا يستوفي هذا المعيار، ولذلك لن تُصدر الجهات المُصدّرة شهادة موثوقة علنًا بناءً على طلب CSR برمجي بحت.
شهادة الإثبات هي دليل، موقّع من الجهاز العتادي، على أن المفتاح الخاص قد أُنشئ على جهاز متوافق ولا يمكن استخراجه منه. تحتاج إليها عندما تُنشئ طلب CSR على وحدة HSM الخاصة بك أو وحدة HSM سحابية أو رمز عتادي. تتحقق الجهة المُصدّرة للشهادات من شهادة الإثبات قبل إصدار الشهادة. مع الرمز المُهيَّأ مسبقًا والمُرسَل من الجهة المُصدّرة، تتم معالجة الإثبات من جانبها.
استخدم مفتاح RSA بحجم لا يقل عن 3072 بت، أو مفتاح ECDSA مكافئ. هذا هو الحد الأدنى الذي تحدده المتطلبات الأساسية لتوقيع الكود.
قاعدة الأجهزة العتادية واحدة في كل الحالات. كانت شهادات توقيع الكود من نوع EV تتطلب دائمًا مفتاحًا محميًا بجهاز عتادي، ومنذ 1 يونيو 2023 تتبع شهادات توقيع الكود القياسية نفس المتطلب. تكمن الاختلافات الأساسية بين الشهادات القياسية وشهادات EV في مستوى التحقق وإشارات الثقة التي تحملها الشهادة، وليس في كيفية تخزين المفتاح.
فقط إذا كانا يستهدفان جهازًا عتاديًا متوافقًا. يمكن لـ OpenSSL إنشاء طلب CSR مقابل وحدة HSM من خلال وحدة PKCS#11، ويمكن لـ keytool أو MMC أو CertReq إنشاء طلب مدعوم بمخزن مفاتيح عتادي. لا يُقبل طلب CSR الذي تُنشئه هذه الأدوات من مخزن مفاتيح برمجي عادي لشهادة توقيع كود موثوقة علنًا.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

