Scroll to navigation

OPENSSL-CA(1SSL) OpenSSL OPENSSL-CA(1SSL)

الاسم

openssl-ca - عينة لتطبيق سلطة تصديق (CA) مصغر

موجز

openssl ca [-help] [-verbose] [-quiet] [-config اسم_الملف] [-name قسم] [-section قسم] [-gencrl] [-revoke ملف] [-valid ملف] [-status رقم_تسلسلي] [-updatedb] [-crl_reason سبب] [-crl_hold تعليمات] [-crl_compromise وقت] [-crl_CA_compromise وقت] [-crl_lastupdate تاريخ] [-crl_nextupdate تاريخ] [-crldays أيام] [-crlhours ساعات] [-crlsec ثوانٍ] [-crlexts قسم] [-startdate تاريخ] [-not_before تاريخ] [-enddate تاريخ] [-not_after تاريخ] [-days معطى] [-md معطى] [-policy معطى] [-keyfile اسم_الملف|uri] [-keyform DER|PEM|P12|ENGINE] [-key معطى] [-passin معطى] [-cert ملف] [-certform DER|PEM|P12] [-selfsign] [-in ملف] [-inform DER|<PEM>] [-out ملف] [-notext] [-dateopt] [-outdir مسار] [-infiles] [-spkac ملف] [-ss_cert ملف] [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions قسم] [-extfile قسم] [-subj معطى] [-utf8] [-sigopt اسم:قيمة] [-vfyopt اسم:قيمة] [-create_serial] [-rand_serial] [-multivalue-rdn] [-rand ملفات] [-writerand ملف] [-engine معرف] [-provider اسم] [-provider-path مسار] [-provparam [اسم:]مفتاح=قيمة] [-propquery استعلام] [طلب_شهادة...]

الوصف

يحاكي هذا الأمر تطبيق سلطة تصديق (CA). انظر قسم تحذيرات خاصة عند التفكير في استخدامه بشكل إنتاجي.

يُنشئ هذا الأمر شهادات تحمل الإصدار 3 من X.509. ما لم يُحدد خلاف ذلك، تُضمّن ملحقات معرف المفتاح كما هو موضح في x509v3_config(5).

يمكن استخدامه لتوقيع طلبات توقيع الشهادات (CSRs) بأشكال متنوعة وإنشاء قوائم إبطال الشهادات (CRLs). كما أنه يحافظ على قاعدة بيانات نصية للشهادات الصادرة وحالتها. عند توقيع الشهادات، يمكن تحديد طلب واحد باستخدام الخيار -in، أو معالجة طلبات متعددة عبر تحديد مجموعة من ملفات certreq بعد جميع الخيارات.

لاحظ أن هناك أيضاً طرقاً مبسطة للغاية لإنشاء الشهادات: يمكن استخدام الأمرين req و x509 لإنشاء الشهادات مباشرة. انظر openssl-req(1) و openssl-x509(1) للحصول على التفاصيل.

قُسّمت أوصاف خيارات الأمر ca وفقاً لكل غرض.

الخيارات

اطبع رسالة الاستخدام.
يطبع هذا تفاصيل إضافية حول العمليات التي تُنفذ.
يطبع هذا تفاصيل أقل حول العمليات التي تُنفذ، وهو ما قد يكون مفيداً أثناء سكربتات الدفعات أو خطوط الأنابيب.
يحدد ملف الضبط المراد استخدامه. اختياري؛ للحصول على وصف للقيمة الافتراضية، انظر "ملخص الأوامر" في openssl(1).
يحدد قسم ملف الضبط المراد استخدامه (يتجاوز default_ca في قسم ca).
اسم ملف إدخال يحتوي على طلب توقيع شهادة (CSR) واحد ليُوقع بواسطة سلطة التصديق (CA).
التنسيق المستخدم عند تحميل ملفات إدخال طلب توقيع الشهادة (CSR)؛ افتراضياً يُحاول استخدام PEM أولاً. انظر openssl-format-options(1) للتفاصيل.
شهادة واحدة موقعة ذاتياً ليُوقعها CA.
ملف يحتوي على مفتاح عمومي واحد موقع من Netscape وتحدٍ وقيم حقول إضافية ليُوقعها CA. انظر قسم تنسيق SPKAC للحصول على معلومات حول تنسيق الإدخال والإخراج المطلوب.
إذا وُجد هذا الخيار، فيجب أن يكون الخيار الأخير، حيث تُعامل جميع المعطيات اللاحقة على أنها أسماء ملفات تحتوي على طلبات شهادات.
ملف الإخراج لإخراج الشهادات إليه. المبدئي هو الخرج القياسي. ستُطبع تفاصيل الشهادة أيضاً في هذا الملف بتنسيق PEM (باستثناء أن -spkac يخرج بتنسيق DER).
المسار الذي ستُخرج الشهادات إليه. ستُكتب الشهادة في ملف يتكون اسمه من الرقم التسلسلي بالنظام الست عشري مع إلحاق .pem.
شهادة سلطة التصديق (CA)، والتي يجب أن تتطابق مع -keyfile.
تنسيق البيانات في ملفات إدخال الشهادة؛ غير محدد افتراضياً. انظر openssl-format-options(1) للتفاصيل.
المفتاح الخاص لـ CA لتوقيع طلبات الشهادات به. يجب أن يتطابق مع -cert.
تنسيق ملف إدخال المفتاح الخاص؛ غير محدد افتراضياً. انظر openssl-format-options(1) للتفاصيل.
مرر الخيارات إلى خوارزمية التوقيع أثناء عمليات التوقيع. أسماء وقيم هذه الخيارات خاصة بالخوارزمية وموثقة في "معلمات التوقيع" في provider-signature(7).
مرر الخيارات إلى خوارزمية التوقيع أثناء عمليات التحقق. أسماء وقيم هذه الخيارات خاصة بالخوارزمية.

غالباً ما يلزم توفير هذا أثناء التوقيع أيضاً، لأن التوقيع الذاتي لطلب توقيع الشهادة (CSR) يُتحقق منه مقابل المفتاح العمومي المضمن، وقد يحتاج هذا التحقق إلى مجموعة خيارات خاصة به.

كلمة المرور المستخدمة لتعمية المفتاح الخاص. نظراً لأن معطيات سطر الأوامر تكون مرئية في بعض الأنظمة (على سبيل المثال، عند استخدام ps(1) على يونكس)، يجب استخدام هذا الخيار بحذر. من الأفضل استخدام -passin.
مصدر كلمة مرور المفتاح لملفات المفاتيح وملفات الشهادات PKCS#12. لمزيد من المعلومات حول تنسيق arg انظر openssl-passphrase-options(1).
يشير إلى أن الشهادات الصادرة يجب أن تُوقع بنفس المفتاح الذي وُقعت به طلبات الشهادات (المعطى عبر -keyfile). تُتجاهل طلبات الشهادات الموقعة بمفتاح مختلف. إذا أُعطيت الخيارات -spkac أو -ss_cert أو -gencrl، يُتجاهل -selfsign.

من نتائج استخدام -selfsign أن الشهادة الموقعة ذاتياً تظهر ضمن المدخلات في قاعدة بيانات الشهادات (انظر خيار الضبط database)، وتستخدم نفس عداد الأرقام التسلسلية مثل جميع الشهادات الأخرى الموقعة بالشهادة الموقعة ذاتياً.

لا تُخرج الصيغة النصية للشهادة إلى ملف المخرجات.
حدد تنسيق خرج التاريخ. القيم هي: rfc_822 و iso_8601. المبدئي هو rfc_822.
يسمح هذا بضبط تاريخ البدء صراحةً. تنسيق التاريخ هو YYMMDDHHMMSSZ (نفس هيكل ASN1 UTCTime)، أو YYYYMMDDHHMMSSZ (نفس هيكل ASN1 GeneralizedTime). في كلا التنسيقين، يجب أن تكون الثواني SS والمنطقة الزمنية Z حاضرتين. بدلاً من ذلك، يمكنك أيضاً استخدام "today".
يسمح هذا بضبط تاريخ انتهاء الصلاحية صراحةً. تنسيق التاريخ هو YYMMDDHHMMSSZ (نفس هيكل ASN1 UTCTime)، أو YYYYMMDDHHMMSSZ (نفس هيكل ASN1 GeneralizedTime). في كلا التنسيقين، يجب أن تكون الثواني SS والمنطقة الزمنية Z حاضرتين. بدلاً من ذلك، يمكنك أيضاً استخدام "today".

يتجاوز هذا خيار -days.

عدد الأيام بدءًا من اليوم لاعتماد الشهادة فيها.

بغض النظر عن الخيار -not_before، تُحسب الأيام دائمًا بدءًا من اليوم. وعند استخدامه مع الخيار -not_after/-startdate، يكون لتاريخ انتهاء الصلاحية الصريح الأولوية.

خلاصة الرسالة المراد استخدامها. يمكن استخدام أي خلاصة يدعمها الأمر openssl-dgst(1). بالنسبة لخوارزميات التوقيع التي لا تدعم الخلاصة (مثل Ed25519 و Ed448)، تُتجاهل أي خلاصة رسالة تُضبط. ينطبق هذا الخيار أيضًا على قوائم إلغاء الشهادات (CRLs).
يحدد هذا الخيار "سياسة" سلطة الشهادات (CA) المراد استخدامها. هذا القسم في ملف الإعداد هو الذي يقرر أي الحقول يجب أن تكون إلزامية أو مطابقة لشهادة سلطة الشهادات. راجع قسم تنسيق السياسة لمزيد من المعلومات.
هذا خيار مهجور لجعل هذا الأمر يعمل مع إصدارات قديمة جدًا من عنصر تحكم تسجيل الشهادات في متصفح IE المسمى "certenr3". لقد كان يستخدم UniversalStrings لكل شيء تقريبًا. ونظرًا لأن عنصر التحكم القديم به ثغرات أمنية متنوعة، فإن استخدامه غير محبذ بشدة.
عادةً ما يكون ترتيب الاسم المميز (DN) للشهادة هو نفس ترتيب الحقول في قسم السياسة ذي الصلة. عند ضبط هذا الخيار، يكون الترتيب هو نفسه الموجود في الطلب. يستخدم هذا إلى حد كبير للتوافق مع عنصر تحكم تسجيل IE القديم الذي لا يقبل الشهادات إلا إذا كانت أسماؤها المميزة تطابق ترتيب الطلب. هذا ليس مطلوبًا لـ Xenroll.
يمكن أن يحتوي DN الخاص بالشهادة على حقل البريد الإلكتروني إذا كان موجودًا في DN الطلب، ومع ذلك، فمن السياسة الجيدة ضبط البريد الإلكتروني في ملحق altName للشهادة فقط. عند ضبط هذا الخيار، يُزال حقل البريد الإلكتروني من موضوع الشهادة ويُضبط فقط في الملحقات، في حال وجودها. يمكن استخدام الكلمة المفتاحية email_in_dn في ملف التهيئة لتمكين هذا السلوك.
يضبط هذا وضع الدفعة. في هذا الوضع لن تُطرح أي أسئلة وستُعتمد جميع الشهادات آليًا.
قسم ملف الإعداد الذي يحتوي على امتدادات الشهادة المراد إضافتها عند إصدار الشهادة (يُستخدم x509_extensions مبدئيًا ما لم يُستخدم الخيار -extfile).

انظر صفحة الدليل x509v3_config(5) لتفاصيل تنسيق قسم الامتداد.

ملف إعداد إضافي لقراءة امتدادات الشهادة منه (باستخدام القسم المبدئي ما لم يُستخدم خيار -extensions أيضًا).
يحل محل اسم الموضوع المعطى في الطلب.

يجب تنسيق المعطى كـ "/type0=value0/type1=value1/type2=...". يمكن الهروب من المحارف الخاصة باستخدام "\" (الشرطة المائلة الخلفية)، وتُحفظ المسافات البيضاء. القيم الفارغة مسموح بها، لكن النوع المقابل لن يُدرج في الشهادة الناتجة. إعطاء "/" مفردة سيؤدي إلى تسلسل فارغ من الأسماء المميزة النسبية (NULL-DN). يمكن تشكيل الأسماء المميزة النسبية متعددة القيم بوضع محرف "+" بدلًا من "/" بين تأكيدات قيم السمات (AVAs) التي تحدد أعضاء المجموعة. مثال:

"/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe"

يؤدي هذا الخيار إلى تفسير قيم الحقول كسلاسل UTF8، بينما تُفسر مبدئيًا كـ ASCII. هذا يعني أن قيم الحقول، سواء طُلبت من طرفية أو حُصل عليها من ملف إعداد، يجب أن تكون سلاسل UTF8 صالحة.
إذا فشلت قراءة الرقم التسلسلي من ملف النص كما هو محدد في الإعداد، فإن تحديد هذا الخيار ينشئ رقمًا تسلسليًا عشوائيًا جديدًا ليُستخدم كرقم تسلسلي تالٍ. للحصول على أرقام تسلسلية عشوائية، استخدم علامة -rand_serial بدلًا من ذلك؛ يجب استخدام هذا الخيار فقط لاسترداد الأخطاء البسيطة.
توليد رقم عشوائي كبير لاستخدامه كرقم تسلسلي. يتجاوز هذا أي خيار أو إعداد لاستخدام ملف أرقام تسلسلية.
هذا الخيار مهجور وليس له أي تأثير.
انظر "خيارات الحالة العشوائية" في openssl(1) لمزيد من التفاصيل.
انظر "خيارات المحرك" في openssl(1). هذا الخيار مهجور.
انظر "خيارات المزود" في openssl(1)، و provider(7)، و property(7).

خيارات قائمة إلغاء الشهادات (CRL)

يولد هذا الخيار قائمة إلغاء شهادات بناءً على المعلومات الموجودة في ملف الفهرس.
يسمح بضبط قيمة حقل lastUpdate الخاص بقائمة الإلغاء صراحةً؛ إذا لم يكن هذا الخيار موجودًا، يُستخدم الوقت الحالي. يقبل الأوقات بتنسيق YYMMDDHHMMSSZ (نفس هيكل ASN1 UTCTime) أو تنسيق YYYYMMDDHHMMSSZ (نفس هيكل ASN1 GeneralizedTime).
يسمح بضبط قيمة حقل nextUpdate الخاص بقائمة الإلغاء صراحةً؛ إذا كان هذا الخيار موجودًا، تُتجاهل أي قيم معطاة لخيارات -crldays و -crlhours و -crlsec. يقبل الأوقات بنفس تنسيقات -crl_lastupdate.
عدد الأيام قبل استحقاق قائمة إلغاء الشهادات التالية. أي عدد الأيام من الآن لوضعها في حقل nextUpdate للقائمة.
عدد الساعات قبل استحقاق قائمة إلغاء الشهادات التالية.
عدد الثواني قبل استحقاق قائمة إلغاء الشهادات التالية.
اسم ملف يحتوي على شهادة لإلغائها.
اسم ملف يحتوي على شهادة لإضافة مدخلة شهادة صالحة.
يعرض حالة إلغاء الشهادة ذات الرقم التسلسلي المحدد ثم يخرج.
يحدّث فهرس قاعدة البيانات لتطهير الشهادات منتهية الصلاحية.
سبب الإلغاء، حيث يكون السبب أحد ما يلي: unspecified (غير محدد)، أو keyCompromise (اختراق المفتاح)، أو CACompromise (اختراق سلطة الشهادات)، أو affiliationChanged (تغير التبعية)، أو superseded (مستبدلة)، أو cessationOfOperation (توقف التشغيل)، أو certificateHold (تعليق الشهادة) أو removeFromCRL (إزالة من القائمة). لا تفرق مطابقة السبب بين حالة الأحرف. ضبط أي سبب إلغاء سيجعل القائمة من الإصدار الثاني (v2).

من الناحية العملية، الخيار removeFromCRL ليس مفيدًا بشكل خاص لأنه يُستخدم فقط في قوائم إلغاء الشهادات الفرعية (delta CRLs) غير المنفذة حاليًا.

يضبط هذا رمز سبب إلغاء القائمة إلى certificateHold وتعليمات التعليق إلى التعليمات التي يجب أن تكون معرف غرض (OID). ورغم إمكانية استخدام أي معرف غرض، إلا أنه عادةً ما تُستخدم holdInstructionNone (التي هُجر استخدامها في RFC 5280)، أو holdInstructionCallIssuer أو holdInstructionReject فقط.
يضبط هذا سبب الإلغاء إلى keyCompromise ووقت الاختراق إلى الوقت. يجب أن يكون الوقت بتنسيق GeneralizedTime وهو YYYYMMDDHHMMSSZ.
هذا الخيار مماثل لـ crl_compromise باستثناء أن سبب الإبطال يُضبط على CACompromise.
قسم ملف التهيئة الذي يحتوي على ملحقات قائمة الإلغاء لتضمينها. إذا لم يوجد قسم لملحقات قائمة الإلغاء، تُنشأ قائمة V1 CRL، وإذا وُجد القسم (حتى لو كان فارغًا) تُنشأ قائمة V2 CRL. ملحقات قائمة الإلغاء المحددة هي ملحقات للقائمة وليست ملحقات لمدخلات القائمة. تجدر الإشارة إلى أن بعض البرمجيات (مثل Netscape) لا يمكنها التعامل مع قوائم V2 CRL. انظر صفحة الدليل x509v3_config(5) لمزيد من التفاصيل حول تنسيق قسم الملحقات.

خيارات ملف الضبط

يُعثر على قسم ملف الضبط الذي يحتوي على خيارات هذا الأمر كالتالي: إذا استُخدم خيار سطر الأوامر -name، فإنه يسمي القسم المُراد استخدامه. خلاف ذلك، يجب تسمية القسم المُراد استخدامه في خيار default_ca ضمن قسم ca في ملف الضبط (أو في القسم المبدئي لملف الضبط). بالإضافة إلى default_ca، تُقرأ الخيارات التالية مباشرة من قسم ca:
RANDFILE
preserve
msie_hack باستثناء RANDFILE، يرجح أن يكون هذا خطأ برمجياً وقد يتغير في الإصدارات المستقبلية.

تتطابق العديد من خيارات ملف الضبط مع خيارات سطر الأوامر. عندما يتوفر الخيار في كل من ملف الضبط وسطر الأوامر، تُستخدم قيمة سطر الأوامر. عندما يوصف خيار بأنه إلزامي، فيجب أن يتوفر في ملف الضبط أو يُستخدم ما يعادله في سطر الأوامر (إن وجد).

يحدد هذا ملفًا يحتوي على معرفات كائنات إضافية. يجب أن يتكون كل سطر في الملف من الصيغة الرقمية لمعرف الكائن يليه فراغ ثم الاسم القصير يليه فراغ وأخيرًا الاسم الطويل.
يحدد هذا قسمًا في ملف الإعداد يحتوي على معرفات كائنات إضافية. يجب أن يتكون كل سطر من الاسم القصير لمعرف الكائن يليه = والصيغة الرقمية. يكون الاسمان القصير والطويل متماثلين عند استخدام هذا الخيار.
مماثل لخيار سطر الأوامر -outdir. يحدد الدليل الذي ستوضع فيه الشهادات الجديدة. إلزامي.
مماثل لـ -cert. يحدد الملف الذي يحتوي على شهادة سلطة التصديق (CA). إلزامي.
مماثل لخيار -keyfile. الملف الذي يحتوي على المفتاح الخاص لسلطة التصديق (CA). إلزامي.
عند البدء، يُحمّل الملف المحدد في مولد الأرقام العشوائية، وعند الخروج تُكتب 256 بايتاً فيه. (ملاحظة: استخدام RANDFILE لم يعد ضرورياً، انظر قسم "HISTORY".
مماثل لخيار -days. عدد الأيام بدءاً من اليوم التي تظل فيها الشهادة صالحة.
مماثل لخيار -startdate. تاريخ البدء لاعتماد الشهادة. إذا لم يُضبط، يُستخدم الوقت الحالي.
مماثل لخيار -enddate. يجب توفر هذا الخيار أو خيار default_days (أو ما يعادلهما في سطر الأوامر).
مماثل لخياري -crlhours و -crldays. لن تُستخدم هذه الخيارات إلا إذا لم يوجد أي منهما في سطر الأوامر. يجب توفر واحد منها على الأقل لإنشاء قائمة CRL.
مماثل لخيار -md. إلزامي إلا إذا كانت خوارزمية التوقيع لا تتطلب ملخصاً (مثل Ed25519 و Ed448).
ملف قاعدة البيانات النصي المُراد استخدامه. إلزامي. يجب أن يكون هذا الملف موجوداً رغم أنه سيكون فارغاً في البداية.
إذا أُعطيت القيمة yes، يجب أن يكون لمدخلات الشهادات الصالحة في قاعدة البيانات مواضيع فريدة. إذا أُعطيت القيمة no، فقد يكون لعدة مدخلات شهادات صالحة نفس الموضوع تمامًا. القيمة المبدئية هي yes، لتتوافق مع الإصدارات القديمة (قبل 0.9.8) من OpenSSL. ومع ذلك، لجعل تدوير شهادة المرجع أسهل، يُنصح باستخدام القيمة no، خاصة إذا اقترنت بخيار سطر الأوامر -selfsign.

لاحظ أنه من المشروع في بعض الظروف إنشاء شهادات بدون أي موضوع. وفي حال وجود شهادات متعددة بدون مواضيع، لا يُعتبر ذلك تكراراً.

ملف نصي يحتوي على الرقم التسلسلي التالي المُراد استخدامه بالتمثيل الست عشري. إلزامي. يجب أن يكون هذا الملف موجوداً ويحتوي على رقم تسلسلي صالح.
ملف نصي يحتوي على رقم CRL التالي المُراد استخدامه بالتمثيل الست عشري. سيُدرج رقم CRL في قوائم CRL فقط إذا كان هذا الملف موجوداً. إذا وُجد الملف، فيجب أن يحتوي على رقم CRL صالح.
بديل احتياطي لخيار -extensions.
بديل احتياطي لخيار -crlexts.
مماثل لـ -preserveDN
نفس خيار -noemailDN. إذا أردت إزالة حقل البريد الإلكتروني من DN الشهادة، فاضبط هذا ببساطة على 'no'. إذا لم يكن موجودًا، فإن المبدئي هو السماح بحقل البريد الإلكتروني في DN الشهادة.
مماثل لـ -msie_hack
مماثل لـ -policy. إلزامي. انظر قسم POLICY FORMAT لمزيد من المعلومات.
تسمح هذه الخيارات بتحديد التنسيق المستخدم لعرض تفاصيل الشهادة عند طلب تأكيد التوقيع من المستخدم. يمكن استخدام جميع الخيارات التي تدعمها أدوات x509 عبر مفتاحي -nameopt و -certopt هنا، باستثناء no_signame و no_sigdump فهما مضبوطان بشكل دائم ولا يمكن تعطيلهما (وذلك لأنه لا يمكن عرض توقيع الشهادة لكونها لم تُوقع بعد في هذه المرحلة).

للتيسير، تُقبل قيم ca_default في كليهما لإنتاج مخرجات معقولة.

إذا لم يتوفر أي من الخيارين، يُستخدم التنسيق الذي كان متبعاً في إصدارات OpenSSL السابقة. يُنصح بشدة بعدم استخدام التنسيق القديم لأنه لا يعرض إلا الحقول المذكورة في قسم policy، كما أنه يسيء التعامل مع أنواع السلاسل متعددة المحارف ولا يعرض الامتدادات.

يحدد كيفية التعامل مع الامتدادات في طلبات الشهادات. إذا ضُبط على none أو لم يكن هذا الخيار موجوداً، فتُتجاهل الامتدادات ولا تُنسخ إلى الشهادة. إذا ضُبط على copy، فتُنسخ أي امتدادات موجودة في الطلب وغير موجودة مسبقاً في الشهادة. أما إذا ضُبط على copyall، فتُنسخ جميع الامتدادات الموجودة في الطلب إلى الشهادة: وإذا كان الامتداد موجوداً بالفعل في الشهادة، فيُحذف أولاً. راجع قسم WARNINGS قبل استخدام هذا الخيار.

الاستخدام الرئيس لهذا الخيار هو السماح لطلب شهادة بتزويد قيم لبعض الامتدادات مثل subjectAltName.

تنسيق السياسة

يتكون قسم السياسة من مجموعة من المتغيرات التي تقابل حقول الاسم المميز (DN) للشهادة. إذا كانت القيمة هي "match"، فيجب أن تطابق قيمة الحقل نفس الحقل في شهادة سلطة التصديق (CA). وإذا كانت القيمة هي "supplied"، فيجب أن يكون الحقل موجوداً. وإذا كانت القيمة هي "optional"، فيمكن أن يكون موجوداً. تُحذف أي حقول غير مذكورة في قسم السياسة بصمت، ما لم يُضبط خيار -preserveDN، ولكن يمكن اعتبار ذلك سلوكاً غريباً أكثر منه مقصوداً.

تنسيق SPKAC

المدخل لخيار سطر الأوامر -spkac هو مفتاح عام وتحدٍّ موقع من Netscape. يأتي هذا عادةً من وسم KEYGEN في نموذج HTML لإنشاء مفتاح خاص جديد. ومع ذلك، من الممكن إنشاء SPKACs باستخدام openssl-spkac(1).

يجب أن يحتوي الملف على متغير SPKAC مضبوطًا على قيمة SPKAC وأيضًا مكونات DN المطلوبة كأزواج من الاسم والقيمة. إذا كنت بحاجة إلى تضمين نفس المكون مرتين، فيمكن أن يسبقه رقم ونقطة '.'.

عند معالجة تنسيق SPKAC، تكون المخرجات بتنسيق DER إذا استُخدمت علامة -out، ولكنها تكون بتنسيق PEM إذا أُرسلت إلى المخرجات القياسية (stdout) أو استُخدمت علامة -outdir.

أمثلة

ملاحظة: تفترض هذه الأمثلة أن هيكل الدليل الذي يفترضه هذا الأمر قد أُعد مسبقاً وأن الملفات ذات الصلة موجودة بالفعل. يتضمن ذلك عادةً إنشاء شهادة CA ومفتاح خاص باستخدام openssl-req(1)، وملف للرقم التسلسلي وملف فهرس فارغ ووضعهما في الأدلة المناسبة.

لاستخدام ملف الضبط النموذجي أدناه، تُنشأ الأدلة demoCA و demoCA/private و demoCA/newcerts. وتُنسخ شهادة سلطة التصديق إلى demoCA/cacert.pem ومفتاحها الخاص إلى demoCA/private/cakey.pem. ويُنشأ ملف demoCA/serial يحتوي مثلاً على "01" وملف الفهرس الفارغ demoCA/index.txt.

توقيع طلب شهادة:

 openssl ca -in req.pem -out newcert.pem

توقيع طلب شهادة SM2:

 openssl ca -in sm2.csr -out sm2.crt -md sm3 \
         -sigopt "distid:1234567812345678" \
         -vfyopt "distid:1234567812345678"

توقيع طلب شهادة باستخدام امتدادات CA:

 openssl ca -in req.pem -extensions v3_ca -out newcert.pem

إنشاء قائمة CRL

 openssl ca -gencrl -out crl.pem

توقيع عدة طلبات:

 openssl ca -infiles req1.pem req2.pem req3.pem

تصديق Netscape SPKAC:

 openssl ca -spkac spkac.txt

عينة لملف SPKAC (اقتُطع سطر SPKAC للوضوح):

 SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
 CN=Steve Test
 emailAddress=steve@openssl.org
 0.OU=OpenSSL Group
 1.OU=Another Group

عينة لملف تهيئة مع الأقسام ذات الصلة لهذا الأمر:

 [ ca ]
 default_ca      = CA_default            # قسم المرجع المبدئي
 [ CA_default ]
 dir            = ./demoCA              # المجلد الرئيس
 database       = $dir/index.txt        # ملف الفهرس.
 new_certs_dir  = $dir/newcerts         # مجلد الشهادات الجديدة
 certificate    = $dir/cacert.pem       # شهادة المرجع
 serial         = $dir/serial           # ملف الرقم التسلسلي
 #rand_serial    = yes                  # للأرقام التسلسلية العشوائية
 private_key    = $dir/private/cakey.pem# مفتاح المرجع الخاص
 default_days   = 365                   # مدة التصديق
 default_crl_days= 30                   # المدة قبل قائمة الإلغاء التالية
 default_md     = sha256                # الملخص المستخدم
 policy         = policy_any            # السياسة المبدئية
 email_in_dn    = no                    # لا تضف البريد إلى DN الشهادة
 name_opt       = ca_default            # خيار عرض اسم الموضوع
 cert_opt       = ca_default            # خيار عرض الشهادة
 copy_extensions = none                 # لا تنسخ الملحقات من الطلب
 [ policy_any ]
 countryName            = supplied
 stateOrProvinceName    = optional
 organizationName       = optional
 organizationalUnitName = optional
 commonName             = supplied
 emailAddress           = optional

الملفات

ملاحظة: يمكن أن يتغير موقع جميع الملفات إما عن طريق خيارات وقت التجميع، أو مدخلات ملف التهيئة، أو متغيرات البيئة، أو خيارات سطر الأوامر. تعكس القيم أدناه القيم المبدئية.

 /usr/local/ssl/lib/openssl.cnf - ملف التهيئة الرئيس
 ./demoCA                       - مجلد مرجع التصديق الرئيس
 ./demoCA/cacert.pem            - شهادة المرجع
 ./demoCA/private/cakey.pem     - مفتاح المرجع الخاص
 ./demoCA/serial                - ملف الرقم التسلسلي للمرجع
 ./demoCA/serial.old            - ملف النسخة الاحتياطية للرقم التسلسلي
 ./demoCA/index.txt             - ملف قاعدة البيانات النصية للمرجع
 ./demoCA/index.txt.old         - ملف النسخة الاحتياطية لقاعدة البيانات
 ./demoCA/certs                 - ملف مخرج الشهادة

قيود

يعد ملف فهرس قاعدة البيانات النصية جزءًا بالغ الأهمية من العملية وإذا فُسد فقد يصعب إصلاحه. من الممكن نظريًا إعادة بناء ملف الفهرس من جميع الشهادات الصادرة وقائمة إلغاء حالية، ومع ذلك لا يوجد خيار للقيام بذلك.

ميزات V2 CRL مثل delta CRLs ليست مدعومة حاليًا.

رغم أنه يمكن إدخال ومعالجة عدة طلبات في وقت واحد، إلا أنه لا يمكن تضمين سوى شهادة SPKAC واحدة أو شهادة موقعة ذاتيًا واحدة.

العلل

هذا الأمر غريب الأطوار وغير ودود في بعض الأحيان.

قد يسبب استخدام قاعدة بيانات نصية في الذاكرة مشكلات عند وجود أعداد كبيرة من الشهادات، لأنه وكما يوحي الاسم، يجب الاحتفاظ بقاعدة البيانات في الذاكرة.

يحتاج هذا الأمر حقًا إلى إعادة كتابة أو إتاحة الوظائف المطلوبة إما على مستوى الأمر أو الواجهة بحيث يمكن لبديل أكثر سهولة في الاستخدام التعامل مع الأمور بشكل صحيح. يساعد نص CA.pl قليلاً ولكن ليس كثيرًا.

تُحذف أي حقول في الطلب غير موجودة في السياسة بصمت. لا يحدث هذا إذا استُخدم الخيار -preserveDN. لفرض غياب حقل البريد الإلكتروني ضمن DN، كما تقترح وثائق RFC، وبغض النظر عن محتويات موضوع الطلب، يمكن استخدام الخيار -noemailDN. ينبغي أن يكون السلوك أكثر ودية وقابلية للضبط.

قد يؤدي إلغاء بعض الأوامر عن طريق رفض تصديق شهادة إلى إنشاء ملف فارغ.

تحذيرات

كان القصد من هذا الأمر أصلاً أن يكون مثالاً على كيفية القيام بالأمور في مرجع التصديق (CA). كوده ليس بجودة الإنتاج. ولم يكن من المفترض استخدامه كمرجع تصديق كامل بحد ذاته، ومع ذلك يستخدمه بعض الأشخاص لهذا الغرض داخليًا على الأقل. عند القيام بذلك، يجب توخي الحذر الشديد لتأمين المفاتيح الخاصة المستخدمة لتوقيع الشهادات بشكل صحيح. ويُنصح بالاحتفاظ بها في مخزن عتاد آمن مثل بطاقة ذكية أو HSM والوصول إليها عبر محرك مناسب أو موفر تعمية.

هذا الأمر هو فعليًا أمر لمستخدم واحد: لا يتم قفل الملفات المختلفة ومحاولات تشغيل أكثر من أمر openssl ca واحد على نفس قاعدة البيانات يمكن أن تؤدي إلى نتائج غير متوقعة.

يجب استخدام خيار copy_extensions بحذر. إذا لم يُتوخَ الحذر، فقد يشكل ذلك خطرًا أمنيًا. على سبيل المثال، إذا كان طلب الشهادة يحتوي على ملحق basicConstraints مع CA:TRUE وضُبطت قيمة copy_extensions على copyall ولم يلاحظ المستخدم ذلك عند عرض الشهادة، فإن هذا سيمنح مقدم الطلب شهادة مرجع تصديق صالحة. يمكن تجنب هذا الموقف بضبط copy_extensions على copy وتضمين basicConstraints مع CA:FALSE في ملف التهيئة. ومن ثم إذا احتوى الطلب على ملحق basicConstraints، فسيُتجاهل.

يُنصح أيضًا بتضمين قيم للملحقات الأخرى مثل keyUsage لمنع الطلب من تقديم قيمه الخاصة.

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

 basicConstraints = CA:TRUE, pathlen:0

فحتى لو صُدرت شهادة مع CA:TRUE فإنها لن تكون صالحة.

التاريخ

منذ OpenSSL 1.1.1، يتبع البرنامج معيار RFC5280. على وجه التحديد، ستُرمز فترة صلاحية الشهادة (المحددة بواسطة أي من -startdate و -enddate و -days) ووقت التحديث الأخير/التالي لقائمة الإلغاء (المحدد بواسطة أي من -crl_lastupdate و -crl_nextupdate و -crldays و -crlhours و -crlsec) بصيغة UTCTime إذا كانت التواريخ أقدم من عام 2049 (بما في ذلك عام 2049)، وبصيغة GeneralizedTime إذا كانت التواريخ في عام 2050 أو ما بعده.

قدم OpenSSL 1.1.1 مولدًا عشوائيًا جديدًا (CSPRNG) مع آلية بذر محسنة. تجعل آلية البذر الجديدة من غير الضروري تحديد RANDFILE لحفظ واستعادة العشوائية. جرى الاحتفاظ بهذا الخيار أساسًا لأسباب تتعلق بالتوافق.

أُضيف الخيار -section في OpenSSL 3.0.0.

أصبح الخيار -multivalue-rdn مهجورًا في OpenSSL 3.0.0 وليس له أي تأثير.

خيار -engine أصبح مهجوراً في OpenSSL 3.0.

منذ الإصدار 3.2 من OpenSSL، تحمل الشهادات المُنشأة الإصدار 3 من معيار X.509، وتُدرج ملحقات معرف المفتاح (key identifier extensions) بشكل افتراضي.

انظر أيضًا

openssl(1), openssl-req(1), openssl-spkac(1), openssl-x509(1), CA.pl(1), config(5), x509v3_config(5)

حقوق النسخ

حقوق النشر 2000-2025 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

7 أبريل 2026 3.6.2