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 وفقاً لكل غرض.

الخيارات

-help
    اطبع رسالة الاستخدام.

-verbose
    يطبع هذا تفاصيل إضافية حول العمليات التي تُنفذ.

-quiet
    يطبع هذا تفاصيل أقل حول العمليات التي تُنفذ، وهو ما قد يكون مفيداً أثناء سكربتات الدفعات أو خطوط الأنابيب.

-config اسم_الملف
    يحدد ملف الضبط المراد استخدامه. اختياري؛ للحصول على وصف للقيمة المبدئية، انظر "ملخص الأوامر" في openssl(1).

-name قسم، -section قسم
    يحدد قسم ملف الضبط المراد استخدامه (يتجاوز default_ca في قسم ca).

-in اسم_الملف
    اسم ملف إدخال يحتوي على طلب توقيع شهادة (CSR) واحد ليُوقع بواسطة سلطة التصديق (CA).

-inform DER|PEM
    التنسيق المستخدم عند تحميل ملفات إدخال طلب توقيع الشهادة (CSR)؛ افتراضياً يُحاول استخدام PEM أولاً. انظر openssl-format-options(1) للتفاصيل.

-ss_cert اسم_الملف
    شهادة واحدة موقعة ذاتياً ليُوقعها CA.

-spkac اسم_الملف
    ملف يحتوي على مفتاح عمومي واحد موقع من Netscape وتحدٍ وقيم حقول إضافية ليُوقعها CA. انظر قسم تنسيق SPKAC للحصول على معلومات حول تنسيق الإدخال والإخراج المطلوب.

-infiles
    إذا وُجد هذا الخيار، فيجب أن يكون الخيار الأخير، حيث تُعامل جميع المعطيات اللاحقة على أنها أسماء ملفات تحتوي على طلبات شهادات.

-out اسم_الملف
    ملف الإخراج لإخراج الشهادات إليه. المبدئي هو الخرج القياسي. ستُطبع تفاصيل الشهادة أيضًا في هذا الملف بتنسيق PEM (باستثناء أن -spkac يخرج بتنسيق DER).

-outdir مسار
    المسار الذي ستُخرج الشهادات إليه. ستُكتب الشهادة في ملف يتكون اسمه من الرقم التسلسلي بالنظام الست عشري مع إلحاق .pem.

-cert اسم_الملف
    شهادة سلطة التصديق (CA)، والتي يجب أن تتطابق مع -keyfile.

-certform DER|PEM|P12
    تنسيق البيانات في ملفات إدخال الشهادة؛ غير محدد افتراضياً. انظر openssl-format-options(1) للتفاصيل.

-keyfile اسم_الملف|uri
    المفتاح الخاص لـ CA لتوقيع طلبات الشهادات به. يجب أن يتطابق مع -cert.

-keyform DER|PEM|P12|ENGINE
    تنسيق ملف إدخال المفتاح الخاص؛ غير محدد افتراضياً. انظر openssl-format-options(1) للتفاصيل.

-sigopt اسم:قيمة
    مرر الخيارات إلى خوارزمية التوقيع أثناء عمليات التوقيع. أسماء وقيم هذه الخيارات خاصة بالخوارزمية وموثقة في "معلمات التوقيع" في provider-signature(7).

-vfyopt اسم:قيمة
    مرر الخيارات إلى خوارزمية التوقيع أثناء عمليات التحقق. أسماء وقيم هذه الخيارات خاصة بالخوارزمية.

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

-key كلمة_المرور
    كلمة المرور المستخدمة لتعمية المفتاح الخاص. نظراً لأن معطيات سطر الأوامر تكون مرئية في بعض الأنظمة (على سبيل المثال، عند استخدام ps(1) على يونكس)، يجب استخدام هذا الخيار بحذر. من الأفضل استخدام -passin.

-passin المعطى
    مصدر كلمة مرور المفتاح لملفات المفاتيح وملفات الشهادات PKCS#12. لمزيد من المعلومات حول تنسيق arg انظر openssl-passphrase-options(1).

-selfsign
    يشير إلى أن الشهادات الصادرة يجب أن تُوقع بنفس المفتاح الذي وُقعت به طلبات الشهادات (المعطى عبر -keyfile). تُتجاهل طلبات الشهادات الموقعة بمفتاح مختلف. إذا أُعطيت الخيارات -spkac أو -ss_cert أو -gencrl، يُتجاهل -selfsign.

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

-notext
    لا تخرج الصيغة النصية للشهادة إلى ملف الإخراج.

-dateopt
    حدد تنسيق خرج التاريخ. القيم هي: rfc_822 و iso_8601. المبدئي هو rfc_822.

-startdate تاريخ، -not_before تاريخ
    يسمح هذا بضبط تاريخ البدء صراحةً. تنسيق التاريخ هو YYMMDDHHMMSSZ (نفس هيكل ASN1 UTCTime)، أو YYYYMMDDHHMMSSZ (نفس هيكل ASN1 GeneralizedTime). في كلا التنسيقين، يجب أن تكون الثواني SS والمنطقة الزمنية Z حاضرتين. بدلاً من ذلك، يمكنك أيضًا استخدام "today".

-enddate تاريخ، -not_after تاريخ
    يسمح هذا بضبط تاريخ انتهاء الصلاحية صراحةً. تنسيق التاريخ هو YYMMDDHHMMSSZ (نفس هيكل ASN1 UTCTime)، أو YYYYMMDDHHMMSSZ (نفس هيكل ASN1 GeneralizedTime). في كلا التنسيقين، يجب أن تكون الثواني SS والمنطقة الزمنية Z حاضرتين. بدلاً من ذلك، يمكنك أيضًا استخدام "today".

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

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

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

-md alg
    خلاصة الرسالة المراد استخدامها. يمكن استخدام أي خلاصة يدعمها الأمر openssl-dgst(1). بالنسبة لخوارزميات التوقيع التي لا تدعم الخلاصة (مثل Ed25519 و Ed448)، تُتجاهل أي خلاصة رسالة تُضبط. ينطبق هذا الخيار أيضًا على قوائم إلغاء الشهادات (CRLs).

-policy معطى
    يحدد هذا الخيار "سياسة" سلطة الشهادات (CA) المراد استخدامها. هذا القسم في ملف الإعداد هو الذي يقرر أي الحقول يجب أن تكون إلزامية أو مطابقة لشهادة سلطة الشهادات. راجع قسم تنسيق السياسة لمزيد من المعلومات.

-msie_hack
    هذا خيار مهجور لجعل هذا الأمر يعمل مع إصدارات قديمة جدًا من عنصر تحكم تسجيل الشهادات في متصفح IE المسمى "certenr3". لقد كان يستخدم UniversalStrings لكل شيء تقريبًا. ونظرًا لأن عنصر التحكم القديم به ثغرات أمنية متنوعة، فإن استخدامه غير محبذ بشدة.

-preserveDN
    عادةً ما يكون ترتيب الاسم المميز (DN) للشهادة هو نفس ترتيب الحقول في قسم السياسة ذي الصلة. عند ضبط هذا الخيار، يكون الترتيب هو نفسه الموجود في الطلب. يستخدم هذا إلى حد كبير للتوافق مع عنصر تحكم تسجيل IE القديم الذي لا يقبل الشهادات إلا إذا كانت أسماؤها المميزة تطابق ترتيب الطلب. هذا ليس مطلوبًا لـ Xenroll.

-noemailDN
    يمكن أن يحتوي الاسم المميز (DN) للشهادة على حقل البريد الإلكتروني (EMAIL) إذا وجد في الاسم المميز للطلب، ومع ذلك، فمن السياسات الجيدة ضبط البريد الإلكتروني في امتداد altName للشهادة فقط. عند ضبط هذا الخيار، يُزال حقل EMAIL من موضوع الشهادة ويُضبط فقط في الامتدادات، إن وجدت. يمكن استخدام الكلمة المفتاحية email_in_dn في ملف الإعداد لتفعيل هذا السلوك.

-batch
    يضبط هذا وضع الدفعة. في هذا الوضع لن تُطرح أي أسئلة وستُعتمد جميع الشهادات آليًا.

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

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

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

-subj معطى
    يحل محل اسم الموضوع المعطى في الطلب.

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

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

-utf8
    يؤدي هذا الخيار إلى تفسير قيم الحقول كسلاسل UTF8، بينما تُفسر مبدئيًا كـ ASCII. هذا يعني أن قيم الحقول، سواء طُلبت من طرفية أو حُصل عليها من ملف إعداد، يجب أن تكون سلاسل UTF8 صالحة.

-create_serial
    إذا فشلت قراءة الرقم التسلسلي من ملف النص كما هو محدد في الإعداد، فإن تحديد هذا الخيار ينشئ رقمًا تسلسليًا عشوائيًا جديدًا ليُستخدم كرقم تسلسلي تالٍ. للحصول على أرقام تسلسلية عشوائية، استخدم علامة -rand_serial بدلًا من ذلك؛ يجب استخدام هذا الخيار فقط لاسترداد الأخطاء البسيطة.

-rand_serial
    توليد رقم عشوائي كبير لاستخدامه كرقم تسلسلي. يتجاوز هذا أي خيار أو إعداد لاستخدام ملف أرقام تسلسلية.

-multivalue-rdn
    هذا الخيار مهجور وليس له أي تأثير.

-rand ملفات، -writerand ملف
    انظر "خيارات الحالة العشوائية" في openssl(1) للتفاصيل.

-engine id
    انظر "خيارات المحرك" في openssl(1). هذا الخيار مهجور.

-provider الاسم
-provider-path المسار
-provparam [الاسم:]المفتاح=القيمة
-propquery propq
    انظر "خيارات المزود" في openssl(1)، و provider(7)، و property(7).

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

-gencrl
    يولد هذا الخيار قائمة إلغاء شهادات بناءً على المعلومات الموجودة في ملف الفهرس.

-crl_lastupdate الوقت
    يسمح بضبط قيمة حقل lastUpdate لقائمة إلغاء الشهادات بشكل صريح؛ إذا لم يكن هذا الخيار موجودًا، يُستخدم الوقت الحالي. يقبل الأوقات بتنسيق YYMMDDHHMMSSZ (مثل بنية ASN1 UTCTime) أو بتنسيق YYYYMMDDHHMMSSZ (مثل بنية ASN1 GeneralizedTime).

-crl_nextupdate الوقت
    يسمح بضبط قيمة حقل nextUpdate لقائمة إلغاء الشهادات بشكل صريح؛ إذا كان هذا الخيار موجودًا، تُتجاهل أي قيم معطاة لـ -crldays و -crlhours و -crlsec. يقبل الأوقات بنفس التنسيقات كـ -crl_lastupdate.

-crldays num
    عدد الأيام قبل استحقاق قائمة إلغاء الشهادات التالية. أي عدد الأيام من الآن لوضعها في حقل nextUpdate للقائمة.

-crlhours num
    عدد الساعات قبل استحقاق قائمة إلغاء الشهادات التالية.

-crlsec num
    عدد الثواني قبل استحقاق قائمة إلغاء الشهادات التالية.

-revoke اسم_الملف
    اسم ملف يحتوي على شهادة لإلغائها.

-valid اسم_الملف
    اسم ملف يحتوي على شهادة لإضافة مدخلة شهادة صالحة.

-status الرقم_التسلسلي
    يعرض حالة إلغاء الشهادة ذات الرقم التسلسلي المحدد ثم يخرج.

-updatedb
    يحدّث فهرس قاعدة البيانات لتطهير الشهادات منتهية الصلاحية.

-crl_reason السبب
    سبب الإلغاء، حيث يكون السبب أحد ما يلي: unspecified (غير محدد)، أو keyCompromise (اختراق المفتاح)، أو CACompromise (اختراق سلطة الشهادات)، أو affiliationChanged (تغير التبعية)، أو superseded (مستبدلة)، أو cessationOfOperation (توقف التشغيل)، أو certificateHold (تعليق الشهادة) أو removeFromCRL (إزالة من القائمة). لا تفرق مطابقة السبب بين حالة الأحرف. ضبط أي سبب إلغاء سيجعل القائمة من الإصدار الثاني (v2).

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

-crl_hold التعليمات
    يضبط هذا رمز سبب إلغاء القائمة إلى certificateHold وتعليمات التعليق إلى التعليمات التي يجب أن تكون معرف غرض (OID). ورغم إمكانية استخدام أي معرف غرض، إلا أنه عادةً ما تُستخدم holdInstructionNone (التي هُجر استخدامها في RFC 5280)، أو holdInstructionCallIssuer أو holdInstructionReject فقط.

-crl_compromise الوقت
    يضبط هذا سبب الإلغاء إلى keyCompromise ووقت الاختراق إلى الوقت. يجب أن يكون الوقت بتنسيق GeneralizedTime وهو YYYYMMDDHHMMSSZ.

-crl_CA_compromise الوقت
    هذا الخيار مماثل لـ crl_compromise باستثناء أن سبب الإبطال يُضبط على CACompromise.

-crlexts القسم
    قسم ملف الضبط الذي يحتوي على امتدادات CRL المُراد تضمينها. إذا لم يوجد قسم لامتدادات CRL، تُنشأ قائمة CRL بالإصدار V1، أما إذا وجد قسم الامتدادات (حتى لو كان فارغاً) فتُنشأ قائمة CRL بالإصدار V2. امتدادات CRL المحددة هي امتدادات CRL و ليست امتدادات لمداخل CRL. تجدر الإشارة إلى أن بعض البرمجيات (مثل Netscape) لا تستطيع التعامل مع قوائم CRL بالإصدار V2. انظر صفحة الدليل x509v3_config(5) لتفاصيل حول تنسيق قسم الامتدادات.

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

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

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

oid_section
    يحدد هذا قسمًا في ملف الضبط يحتوي على معرفات كائنات إضافية. يجب أن يتكون كل سطر من الاسم القصير لمعرف الكائن يليه = والصيغة الرقمية. يكون الاسمان القصير والطويل متماثلين عند استخدام هذا الخيار.

new_certs_dir
    مماثل لخيار سطر الأوامر -outdir. يحدد الدليل الذي ستوضع فيه الشهادات الجديدة. إلزامي.

certificate
    مماثل لـ -cert. يحدد الملف الذي يحتوي على شهادة سلطة التصديق (CA). إلزامي.

private_key
    مماثل لخيار -keyfile. الملف الذي يحتوي على المفتاح الخاص لسلطة التصديق (CA). إلزامي.

RANDFILE
    عند البدء، يُحمّل الملف المحدد في مولد الأرقام العشوائية، وعند الخروج سوف تُكتب 256 بايتاً فيه. (ملاحظة: استخدام RANDFILE لم يعد ضرورياً، انظر قسم "HISTORY".

default_days
    مماثل لخيار -days. عدد الأيام بدءاً من اليوم التي تظل فيها الشهادة صالحة.

default_startdate
    مماثل لخيار -startdate. تاريخ البدء لاعتماد الشهادة. إذا لم يُضبط، يُستخدم الوقت الحالي.

default_enddate
    مماثل لخيار -enddate. يجب توفر هذا الخيار أو خيار default_days (أو ما يعادلهما في سطر الأوامر).

default_crl_hours default_crl_days
    مماثل لخياري -crlhours و -crldays. لن تُستخدم هذه الخيارات إلا إذا لم يوجد أي منهما في سطر الأوامر. يجب توفر واحد منها على الأقل لإنشاء قائمة CRL.

default_md
    مماثل لخيار -md. إلزامي إلا إذا كانت خوارزمية التوقيع لا تتطلب ملخصاً (مثل Ed25519 و Ed448).

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

unique_subject
    إذا أُعطيت القيمة yes، فيجب أن تمتلك مداخل الشهادات الصالحة في قاعدة البيانات مواضيع فريدة. أما إذا أُعطيت القيمة no، فيمكن لعدة مداخل شهادات صالحة أن تمتلك نفس الموضوع تماماً. القيمة المبدئية هي yes، للتوافق مع إصدارات OpenSSL القديمة (ما قبل 0.9.8). ومع ذلك، لتسهيل عملية تجديد شهادة سلطة التصديق، يوصى باستخدام القيمة no، خاصة إذا اقترنت بخيار سطر الأوامر -selfsign.

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

serial
    ملف نصي يحتوي على الرقم التسلسلي التالي المُراد استخدامه بالتمثيل الست عشري. إلزامي. يجب أن يكون هذا الملف موجوداً ويحتوي على رقم تسلسلي صالح.

crlnumber
    ملف نصي يحتوي على رقم CRL التالي المُراد استخدامه بالتمثيل الست عشري. سيُدرج رقم CRL في قوائم CRL فقط إذا كان هذا الملف موجوداً. إذا وُجد الملف، فيجب أن يحتوي على رقم CRL صالح.

x509_extensions
    بديل احتياطي لخيار -extensions.

crl_extensions
    بديل احتياطي لخيار -crlexts.

preserve
    مماثل لـ -preserveDN

email_in_dn
    مماثل لـ -noemailDN. إذا كنت ترغب في إزالة حقل البريد الإلكتروني (EMAIL) من الاسم المميز (DN) للشهادة، فما عليك سوى ضبط هذا الخيار على 'no'. في حال عدم توفره، فإن الإجراء المبدئي هو السماح بحقل البريد الإلكتروني في الاسم المميز للشهادة.

msie_hack
    مماثل لـ -msie_hack

policy
    مماثل لـ -policy. إلزامي. انظر قسم POLICY FORMAT لمزيد من المعلومات.

name_opt, cert_opt
    تسمح هذه الخيارات بتحديد التنسيق المستخدم لعرض تفاصيل الشهادة عند طلب تأكيد التوقيع من المستخدم. يمكن استخدام جميع الخيارات التي تدعمها أدوات x509 عبر مفتاحي -nameopt و -certopt هنا، باستثناء no_signame و no_sigdump فهما مضبوطان بشكل دائم ولا يمكن تعطيلهما (وذلك لأنه لا يمكن عرض توقيع الشهادة لكونها لم تُوقع بعد في هذه المرحلة).

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

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

copy_extensions
    يحدد كيفية التعامل مع الامتدادات في طلبات الشهادات. إذا ضُبط على 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. لفرض غياب حقل البريد الإلكتروني (EMAIL) ضمن 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 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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