Scroll to navigation

OPENSSL-PKCS8(1SSL) OpenSSL OPENSSL-PKCS8(1SSL)

الاسم

openssl-pkcs8 - أمر تحويل المفتاح الخاص بصيغة PKCS#8

موجز

openssl pkcs8 [-help] [-topk8] [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-passin arg] [-out filename] [-passout arg] [-iter count] [-noiter] [-nocrypt] [-traditional] [-v2 alg] [-v2prf alg] [-v1 alg] [-scrypt] [-scrypt_N N] [-scrypt_r r] [-scrypt_p p] [-saltlen size] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq]

الوصف

يعالج هذا الأمر المفاتيح الخاصة بصيغة PKCS#8. يمكنه التعامل مع كل من صيغة PrivateKeyInfo غير المشفرة وصيغة EncryptedPrivateKeyInfo باستخدام مجموعة متنوعة من خوارزميات PKCS#5 (الإصدار 1.5 و 2.0) و PKCS#12.

الخيارات

اطبع رسالة الاستخدام.
عادةً يُتوقع مفتاح خاص بصيغة PKCS#8 كمدخل، وسيُكتب مفتاح خاص إلى ملف الإخراج. مع الخيار -topk8 ينعكس الوضع: يقرأ مفتاحًا خاصًا ويكتب مفتاحًا بصيغة PKCS#8.
المدخلات والتنسيقات؛ التنسيق المبدئي هو PEM. انظر openssl-format-options(1) للتفاصيل.

إذا كان المفتاح يُحوّل من صيغة PKCS#8 (أي أن الخيار -topk8 غير مستخدم)، فيجب أن يكون ملف الإدخال بصيغة PKCS#8. يُتوقع مفتاح مشفر ما لم يُدرج الخيار -nocrypt.

إذا لم يُستخدم -topk8 وضُبط وضع PEM، فسيكون ملف الإخراج مفتاحًا خاصًا غير مشفر بصيغة PKCS#8. إذا استُخدم الخيار -traditional، فسيُكتب مفتاح خاص بصيغة تقليدية بدلاً من ذلك.

إذا لم يُستخدم -topk8 وضُبط وضع DER، فسيكون ملف الإخراج مفتاحًا خاصًا غير مشفر بصيغة DER تقليدية.

إذا استُخدم -topk8، فيمكن استخدام أي مفتاح خاص مدعوم لملف الإدخال بصيغة يحددها -inform. سيكون ملف الإخراج بصيغة PKCS#8 مشفرة باستخدام معلمات التشفير المحددة ما لم يُدرج -nocrypt.

عند وجود هذا الخيار وعدم استخدام -topk8، يُكتب مفتاح خاص بصيغة تقليدية.
يحدد هذا ملف الإدخال لقراءة مفتاح منه، أو الإدخال القياسي إذا لم يُحدد هذا الخيار. إذا كان المفتاح مشفرًا، فسيُطلب عبارة مرور ما لم يُعطَ -passin.
مصدر كلمة المرور لملف المدخلات والمخرجات. لمزيد من المعلومات حول تنسيق arg انظر openssl-passphrase-options(1).
يحدد هذا ملف الإخراج لكتابة مفتاح إليه، أو الإخراج القياسي افتراضيًا. يمكن أن يكون اسم ملف الإخراج مطابقًا لاسم ملف الإدخال، مما يؤدي إلى استبدال محتويات الملف. لاحظ أن الإدخال/الإخراج للملف ليس ذريًا. يُبتَر ملف الإخراج ثم يُكتب.

إذا ضُبطت أي خيارات تشفير ولم يُعطَ -passout، فسيُطلب عبارة مرور. عند مقاطعة إدخال كلمة المرور، لا يُمس ملف الإخراج.

عند إنشاء حاويات PKCS#8 جديدة، استخدم عددًا معينًا من التكرارات على كلمة المرور في اشتقاق مفتاح التشفير لإخراج PKCS#8. تزيد القيم العالية من الوقت اللازم لاختراق حاوية PKCS#8 بالقوة العمياء.
عند إنشاء حاويات PKCS#8 جديدة، استخدم 1 كعدد التكرارات.
المفاتيح المُنشأة أو المُدخلة بصيغة PKCS#8 هي عادةً بنى EncryptedPrivateKeyInfo باستخدام خوارزمية تشفير مناسبة قائمة على كلمة المرور. مع هذا الخيار، يُتوقع أو يُخرج بنية PrivateKeyInfo غير مشفرة. لا يقوم هذا الخيار بتشفير المفاتيح الخاصة على الإطلاق ويجب استخدامه فقط عند الضرورة القصوى. بعض البرامج مثل بعض إصدارات برامج توقيع كود Java استخدمت مفاتيح خاصة غير مشفرة.
يضبط هذا الخيار خوارزمية PKCS#5 الإصدار 2.0.

وسيطة alg هي خوارزمية التشفير المستخدمة، القيم الصالحة تشمل aes128 و aes256 و des3. إذا لم يُحدد هذا الخيار، يُستخدم aes256.

يحدد هذا الخيار خوارزمية PRF المستخدمة مع PKCS#5 v2.0. قيمة نموذجية ستكون hmacWithSHA256. إذا لم يُضبط هذا الخيار، يُستخدم المبدئي للشيفرة أو hmacWithSHA256 إذا لم يوجد مبدئي.

قد لا تدعم بعض التطبيقات خوارزميات PRF مخصصة وقد تتطلب خيار hmacWithSHA1 للعمل.

يشير هذا الخيار إلى استخدام خوارزمية PKCS#5 v1.5 أو PKCS#12. قد لا تدعم بعض التطبيقات القديمة PKCS#5 v2.0 وقد تتطلب هذا الخيار. إذا لم يُحدد، يُستخدم نموذج PKCS#5 v2.0.
يستخدم خوارزمية scrypt لتشفير المفتاح الخاص باستخدام وسائط مبدئية: حالياً N=16384 و r=8 و p=1 و AES في وضع CBC بمفتاح 256 بت. يمكن تعديل هذه الوسائط باستخدام خيارات -scrypt_N و -scrypt_r و -scrypt_p و -v2.
يضبط وسائط scrypt N أو r أو p.
يضبط طول الملح (بالبايت) المستخدم لخوارزمية PBE. إذا لم تُحدد هذه القيمة، المبدئي لـ PBES2 هو 16 (128 بت) و 8 (64 بت) لـ PBES1.
انظر "خيارات الحالة العشوائية" في openssl(1) للتفاصيل.
انظر "خيارات المحرك" في openssl(1). هذا الخيار مهجور.
انظر "خيارات المزود" في openssl(1)، و provider(7)، و property(7).

ملاحظات

مبدئياً، عند تحويل مفتاح إلى تنسيق PKCS#8، يُستخدم PKCS#5 v2.0 باستخدام AES 256 بت مع HMAC و SHA256.

لا تدعم بعض التطبيقات القديمة تنسيق PKCS#5 v2.0 وتتطلب نموذج PKCS#5 v1.5 الأقدم بدلاً من ذلك، وقد تتطلب أيضًا خوارزميات تشفير ضعيفة غير آمنة مثل DES 56 بت.

المفاتيح الخاصة المشفرة باستخدام خوارزميات PKCS#5 v2.0 وأعداد تكرار عالية أكثر أماناً من تلك المشفرة باستخدام التنسيقات التقليدية المتوافقة مع SSLeay. لذا إذا اعتُبر الأمان الإضافي مهماً، ينبغي تحويل المفاتيح.

من الممكن كتابة مفاتيح خاصة مشفرة بترميز DER بتنسيق PKCS#8 لأن تفاصيل التشفير تُضمن على مستوى ASN1 بينما يتضمنها التنسيق التقليدي على مستوى PEM.

خوارزميات PKCS#5 V1.5 و PKCS#12

يمكن استخدام خوارزميات متنوعة مع خيار سطر الأوامر -v1، بما في ذلك PKCS#5 v1.5 و PKCS#12. تُوصف هذه بالتفصيل أدناه.

أُدرجت هذه الخوارزميات في مواصفات PKCS#5 v1.5 الأصلية. توفر فقط 56 بت من الحماية لأن كلاهما يستخدم DES.
لم تُذكر هذه الخوارزميات في مواصفات PKCS#5 v1.5 الأصلية لكنها تستخدم نفس خوارزمية اشتقاق المفتاح وتدعمها بعض البرامج. تُذكر في PKCS#5 v2.0. تستخدم إما RC2 64 بت أو DES 56 بت.
تستخدم هذه الخوارزميات خوارزمية تشفير PKCS#12 القائمة على كلمة المرور وتسمح باستخدام خوارزميات تشفير قوية مثل triple DES أو RC2 128 بت.

أمثلة

تحويل مفتاح خاص إلى تنسيق PKCS#8 باستخدام وسائط مبدئية (AES بمفتاح 256 بت و hmacWithSHA256):

 openssl pkcs8 -in key.pem -topk8 -out enckey.pem

تحويل مفتاح خاص إلى صيغة PKCS#8 غير مشفرة:

 openssl pkcs8 -in key.pem -topk8 -nocrypt -out enckey.pem

تحويل مفتاح خاص إلى صيغة PKCS#5 v2.0 باستخدام DES الثلاثي:

 openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem

تحويل مفتاح خاص إلى صيغة PKCS#5 v2.0 باستخدام AES بـ 256 بت في وضع CBC و PRF hmacWithSHA512:

 openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -out enckey.pem

تحويل مفتاح خاص إلى PKCS#8 باستخدام خوارزمية متوافقة مع PKCS#5 1.5 (DES):

 openssl pkcs8 -in key.pem -topk8 -v1 PBE-MD5-DES -out enckey.pem

تحويل مفتاح خاص إلى PKCS#8 باستخدام خوارزمية متوافقة مع PKCS#12 (3DES):

 openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES

قراءة مفتاح خاص بصيغة PKCS#8 غير مشفرة بصيغة DER:

 openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem

تحويل مفتاح خاص من أي صيغة PKCS#8 مشفرة إلى الصيغة التقليدية:

 openssl pkcs8 -in pk8.pem -traditional -out key.pem

تحويل مفتاح خاص إلى صيغة PKCS#8، مع التشفير باستخدام AES-256 ومليون تكرار لكلمة المرور:

 openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -iter 1000000 -out pk8.pem

المعايير

نُشرت متجهات اختبار من هذا التنفيذ لـ PKCS#5 v2.0 في القائمة البريدية pkcs-tng باستخدام DES الثلاثي و DES و RC2 بأعداد تكرار عالية، وأكد عدة أشخاص أنهم استطاعوا فك تشفير المفاتيح الخاصة المنتجة، وبالتالي يمكن افتراض أن تنفيذ PKCS#5 v2.0 دقيق بشكل معقول على الأقل بقدر ما يتعلق بهذه الخوارزميات.

صيغة المفاتيح الخاصة لـ PKCS#8 DSA (وغيرها) غير موثقة جيدًا: فهي مخفية في PKCS#11 v2.01، القسم 11.9. صيغة المفتاح الخاص الافتراضية لـ DSA في OpenSSL تتوافق مع هذا المعيار.

العلل

يجب أن يكون هناك خيار يطبع خوارزمية التشفير المستخدمة وتفاصيل أخرى مثل عدد التكرارات.

انظر أيضًا

openssl(1), openssl-dsa(1), openssl-rsa(1), openssl-genrsa(1), openssl-gendsa(1)

التاريخ

أُضيف الخيار -iter في OpenSSL 1.1.0.

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

حقوق النسخ

حقوق النشر 2000-2023 لمؤلفي مشروع 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.5.6