OPENSSL-SMIME(1SSL)

الاسم
openssl-smime - أمر S/MIME

موجز
openssl smime [-help] [-encrypt] [-decrypt] [-sign] [-resign] [-verify] [-pk7out] [-binary] [-crlfeol] [-cipher] [-in ملف] [-certfile ملف] [-signer ملف] [-nointern] [-noverify] [-nochain] [-nosigs] [-nocerts] [-noattr] [-nodetach] [-nosmimecap] [-recip ملف] [-inform DER|PEM|SMIME] [-outform DER|PEM|SMIME] [-keyform DER|PEM|P12|ENGINE] [-passin وسيطة] [-inkey اسم_ملف|uri] [-out ملف] [-content ملف] [-to عنوان] [-from عنوان] [-subject موضوع] [-text] [-indef] [-noindef] [-stream] [-md ملخص] [-CAfile ملف] [-no-CAfile] [-CApath دليل] [-no-CApath] [-CAstore uri] [-no-CAstore] [-engine معرف] [-rand ملفات] [-writerand ملف] [-allow_proxy_certs] [-attime طابع_زمني] [-no_check_time] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy وسيطة] [-policy_check] [-policy_print] [-purpose غرض] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level رقم] [-verify_depth رقم] [-verify_email بريد] [-verify_hostname اسم_مضيف] [-verify_ip ip] [-verify_name اسم] [-x509_strict] [-issuer_checks] [-provider اسم] [-provider-path مسار] [-provparam [اسم:]مفتاح=قيمة] [-propquery propq] [-config ملف_إعدادات] شهادة_مستلم ...

الوصف
يعالج هذا الأمر بريد S/MIME. يمكنه تشفير وفك تشفير وتوقيع والتحقق من رسائل S/MIME.

الخيارات
توجد ستة خيارات عملية تحدد نوع العملية المراد تنفيذها: -encrypt و-decrypt و-sign و-resign و-verify و-pk7out. هذه الخيارات متعارضة. يختلف معنى الخيارات الأخرى وفقًا لنوع العملية.

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

-encrypt
    تشفير البريد لشهادات المستلمين المعطاة. ملف الإدخال هو الرسالة المراد تشفيرها. ملف الإخراج هو البريد المشفر بتنسيق MIME.

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

-decrypt
    فك تشفير البريد باستخدام الشهادة والمفتاح الخاص المقدمين. يتوقع رسالة بريد مشفرة بتنسيق MIME لملف الإدخال. يُكتب البريد المفكوك تشفيره إلى ملف الإخراج.

-sign
    توقيع البريد باستخدام الشهادة والمفتاح الخاص المقدمين. ملف الإدخال هو الرسالة المراد توقيعها. تُكتب الرسالة الموقعة بتنسيق MIME إلى ملف الإخراج.

-resign
    إعادة توقيع رسالة: أخذ رسالة موجودة وموقع واحد أو أكثر من الموقعين الجدد.

-verify
    التحقق من البريد الموقع. يتوقع رسالة بريد موقعة عند الإدخال ويخرج البيانات الموقعة. يُدعم كل من التوقيع بالنص الواضح والتوقيع المعتم.

-pk7out
    يأخذ رسالة إدخال ويكتب بنية PKCS#7 مشفرة بتنسيق PEM.

-in اسم_الملف
    رسالة الإدخال المراد تشفيرها أو توقيعها أو رسالة MIME المراد فك تشفيرها أو التحقق منها.

-out اسم_الملف
    نص الرسالة الذي فُكت تعميته أو فُحص، أو مخرج رسالة تنسيق MIME التي وُقعت أو فُحصت.

-inform DER|PEM|SMIME
    تنسيق الإدخال لبنية PKCS#7 (S/MIME) (إذا كانت تُقرأ)؛ المبدئي هو SMIME. انظر openssl-format-options(1) للتفاصيل.

-outform DER|PEM|SMIME
    تنسيق الإخراج لبنية PKCS#7 (S/MIME) (إذا كانت تُكتب)؛ المبدئي هو SMIME. انظر openssl-format-options(1) للتفاصيل.

-keyform DER|PEM|P12|ENGINE
    تنسيق المفتاح؛ غير محدد بشكل مبدئي. انظر openssl-format-options(1) للحصول على التفاصيل.

-stream، -indef
    الخياران -stream و -indef متكافئان ويمكنان الإدخال/الإخراج المتدفق لعمليات الترميز. هذا يسمح بمعالجة البيانات في تمريرة واحدة دون الحاجة إلى الاحتفاظ بكامل المحتويات في الذاكرة، مما يدعم الملفات الكبيرة جدًا. يُضبط التدفق آليًا لتوقيع S/MIME مع البيانات المنفصلة إذا كانت صيغة المخرجات SMIME، وهو حاليًا معطل مبدئيًا لجميع العمليات الأخرى.

-noindef
    عطّل الإدخال/الإخراج المتدفق حيث قد ينتج عنه ترميز مُنشأ بطول غير محدد. ليس لهذا الخيار أي تأثير حالياً. في المستقبل سيُفعل التدفق مبدئياً لجميع العمليات ذات الصلة وسيعطله هذا الخيار.

-content اسم_الملف
    يحدد هذا ملفًا يحتوي على المحتوى المنفصل، هذا مفيد فقط مع الأمر -verify. يمكن استخدامه فقط إذا كانت بنية PKCS#7 تستخدم نموذج التوقيع المنفصل حيث لا يُضمن المحتوى. سيتجاوز هذا الخيار أي محتوى إذا كان تنسيق الإدخال هو S/MIME ويستخدم نوع محتوى MIME متعدد الأجزاء/موقع.

-text
    يضيف هذا الخيار ترويسات MIME نصية صرفة (text/plain) إلى الرسالة المزودة عند التعمية أو التوقيع. وعند فك التعمية أو التحقق، فإنه يجرد الترويسات النصية: إذا لم تكن الرسالة التي فُكت تعميتها أو التي جرى التحقق منها من نوع MIME‏ text/plain، فسيحدث خطأ.

-md digest
    خوارزمية الملخص المراد استخدامها عند التوقيع أو إعادة التوقيع. إذا لم تكن موجودة، فسيُستخدم خوارزمية الملخص المبدئية لمفتاح التوقيع (عادةً SHA1).

-تعمية
    خوارزمية التشفير المراد استخدامها. على سبيل المثال، DES (56 بت) - -des، triple DES (168 بت) - -des3، أو AES (256 بت) - -aes256. يمكن أيضًا استخدام أي اسم خوارزمية قياسي (كما تستخدمه دالة EVP_get_cipherbyname()) مسبوقًا بشرطة، على سبيل المثال -aes-128-cbc. انظر openssl-enc(1) لقائمة الشفرات المدعومة من إصدار OpenSSL الخاص بك.

    إذا لم يُحدد، يُستخدم AES-256-CBC كمبدئي. يُستخدم فقط مع -encrypt.

-nointern
    عند التحقق من رسالة، يُبحث عادةً في الشهادات (إن وجدت) المضمنة في الرسالة عن شهادة التوقيع. مع هذا الخيار، تُستخدم الشهادات المحددة في خيار -certfile فقط. ومع ذلك، يمكن الاستمرار في استخدام الشهادات المقدمة كجهات تصديق (CAs) غير موثوقة.

-noverify
    لا تتحقق من شهادة الموقعين لرسالة موقعة.

-nochain
    لا تقم بالتحقق من سلسلة شهادات الموقعين؛ أي لا تستخدم الشهادات في الرسالة الموقعة كمراجع تصديق غير موثوقة.

-nosigs
    لا تحاول التحقق من التوقيعات على الرسالة.

-nocerts
    عند توقيع رسالة، يتم تضمين شهادة الموقع عادةً. مع هذا الخيار يتم استبعادها. سيقلل هذا من حجم الرسالة الموقعة، لكن يجب أن يكون لدى المدقق نسخة من شهادة الموقع متاحة محلياً (ممررة باستخدام خيار -certfile مثلاً).

-noattr
    عادةً، عند توقيع رسالة، تُدرج مجموعة من السمات التي تتضمن وقت التوقيع والخوارزميات المتناظرة المدعومة. مع هذا الخيار لا تُدرج.

-nodetach
    عند توقيع رسالة استخدم التوقيع المعتم. هذا الشكل أكثر مقاومة للترجمة بواسطة مرحلات البريد لكن لا يمكن قراءته بواسطة وكلاء البريد الذين لا يدعمون S/MIME. بدون هذا الخيار يُستخدم التوقيع بنص واضح مع نوع MIME multipart/signed.

-nosmimecap
    عند توقيع رسالة، لا تُدرج سمة SMIMECapabilities.

-binary
    عادةً ما تُحول رسالة المدخلات إلى التنسيق "القياسي" الذي يستخدم فعليًا CR و LF كنهاية للسطر: كما هو مطلوب في مواصفة S/MIME. عند وجود هذا الخيار لا يحدث أي تحويل. وهذا مفيد عند التعامل مع البيانات الثنائية التي قد لا تكون بتنسيق MIME.

-crlfeol
    عادةً ما يستخدم ملف المخرجات محرف LF واحدًا كنهاية للسطر. عند وجود هذا الخيار يُستخدم CRLF بدلاً من ذلك.

-certfile ملف
    يُسمح بتحديد شهادات إضافية. عند التوقيع، ستُضمَّن في الرسالة. وعند التحقق، سيُبحث فيها عن شهادات الموقِّع وتُستخدم لبناء السلسلة.

    يمكن أن يكون المدخل بتنسيق PEM، أو DER، أو PKCS#12.

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

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

-inkey اسم_الملف|معرف_مورد
    المفتاح الخاص المراد استخدامه عند التوقيع أو فك التعمية. يجب أن يطابق الشهادة المقابلة. إذا لم يُحدد هذا الخيار، فيجب تضمين المفتاح الخاص في ملف الشهادة المحدد مع ملف -recip أو -signer. عند التوقيع، يمكن استخدام هذا الخيار عدة مرات لتحديد مفاتيح متتالية.

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

-to، -from، -subject
    ترويسات البريد ذات الصلة. يتم تضمين هذه خارج الجزء الموقع من الرسالة لذا يمكن تضمينها يدوياً. إذا تم التوقيع، فإن العديد من عملاء البريد S/MIME يتحققون من تطابق عنوان البريد الإلكتروني لشهادة الموقع مع ذلك المحدد في عنوان From:.

-allow_proxy_certs، -attime، -no_check_time، -check_ss_sig، -crl_check، -crl_check_all، -explicit_policy، -extended_crl، -ignore_critical، -inhibit_any، -inhibit_map، -no_alt_chains، -partial_chain، -policy، -policy_check، -policy_print، -purpose، -suiteB_128، -suiteB_128_only، -suiteB_192، -trusted_first، -use_deltas، -auth_level، -verify_depth، -verify_email، -verify_hostname، -verify_ip، -verify_name، -x509_strict -issuer_checks
    اضبط خيارات متنوعة للتحقق من سلسلة الشهادات. انظر "خيارات التحقق" في openssl-verification-options(1) للحصول على التفاصيل.

    تتسبب أي أخطاء في التحقق في خروج الأمر.

-CAfile ملف، -no-CAfile، -CApath دليل، -no-CApath، -CAstore معرف_المورد، -no-CAstore
    انظر "Trusted Certificate Options" في openssl-verification-options(1) للتفاصيل.

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

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

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

-config ملف_الضبط
    انظر "Configuration Option" في openssl(1).

recipcert ...
    شهادة واحدة أو أكثر لمستلمي الرسالة، تُستخدم عند تشفير رسالة.

ملاحظات
يجب إرسال رسالة MIME بدون أي أسطر فارغة بين الترويسات والمخرجات. ستضيف بعض برامج البريد سطرًا فارغًا آليًا. يعد تمرير البريد مباشرة إلى sendmail إحدى الطرق لتحقيق التنسيق الصحيح.

يجب أن تتضمن الرسالة الممررة المطلوب توقيعها أو تعميتها ترويسات MIME اللازمة وإلا فلن يعرضها العديد من عملاء S/MIME عرضًا صحيحًا (هذا إن عُرضت أصلًا). يمكنك استخدام الخيار -text لإضافة ترويسات نصية صرفة آليًا.

الرسالة "الموقعة والمشفرة" هي تلك التي تُشَفَّرُ فيها رسالة موقعة بالفعل. يمكن إنتاج ذلك عن طريق تشفير رسالة وُقِّعَت مسبقاً: راجع قسم الأمثلة.

يسمح هذا الإصدار من البرنامج بموقع واحد فقط لكل رسالة ولكنه سيتحقق من موقعين متعددين في الرسائل المستلمة. تتعطل بعض عملاء S/MIME إذا كانت الرسالة تحتوي على موقعين متعددين. من الممكن توقيع الرسائل "بالتوازي" عن طريق توقيع رسالة موقعة بالفعل.

الخياران -encrypt و -decrypt يعكسان الاستخدام الشائع في عملاء S/MIME. بالمعنى الدقيق، يعالجان بيانات PKCS#7 المغلفة: تُستخدم بيانات PKCS#7 المشفرة لأغراض أخرى.

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

يُمكّن الخياران -stream و -indef دعم الإدخال/الإخراج المتدفق. ونتيجة لذلك، يكون الترميز BER باستخدام ترميز مبني غير محدد الطول ولم يعد DER. التدفق مدعوم لعمليتي -encrypt و -sign إذا لم يكن المحتوى منفصلاً.

يُستخدم البث دائمًا لعملية -sign مع البيانات المنفصلة لكن نظرًا لأن المحتوى لم يعد جزءًا من بنية PKCS#7 يبقى الترميز DER.

رموز الخروج

0   نُفذت العملية بنجاح تام.

1   حدث خطأ أثناء تحليل خيارات الأمر.

2   أحد ملفات المدخلات لا يمكن قراءته.

3   حدث خطأ أثناء إنشاء ملف PKCS#7 أو عند قراءة رسالة MIME.

4   حدث خطأ أثناء فك تعمية الرسالة أو الاستيثاق منها.

5   فُحصت الرسالة بشكل صحيح ولكن حدث خطأ أثناء كتابة شهادات الموقعين.

أمثلة
أنشئ رسالة موقعة بنص واضح:

 openssl smime -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem

إنشاء رسالة موقعة معتمة:

 openssl smime -sign -in message.txt -text -out mail.msg -nodetach \
        -signer mycert.pem

أنشئ رسالة موقعة، وضمّن بعض الشهادات الإضافية واقرأ المفتاح الخاص من ملف آخر:

 openssl smime -sign -in in.txt -text -out mail.msg \
        -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem

إنشاء رسالة موقعة مع موقعين:

 openssl smime -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem -signer othercert.pem

أرسل رسالة موقعة تحت يونكس مباشرة إلى sendmail، مع تضمين الترويسات:

 openssl smime -sign -in in.txt -text -signer mycert.pem \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed message" | sendmail someone@somewhere

تحقق من رسالة واستخرج شهادة الموقع إذا نجح ذلك:

 openssl smime -verify -in mail.msg -signer user.pem -out signedtext.txt

أرسل بريدًا معمى باستخدام triple DES:

 openssl smime -encrypt -in in.txt -out mail.msg -from steve@openssl.org \
        -to someone@somewhere -subject "Encrypted message" \
        -des3 user.pem

توقيع وتعمية البريد:

 openssl smime -sign -in ml.txt -signer my.pem -text \
        | openssl smime -encrypt -out mail.msg \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed and Encrypted message" -des3 user.pem

ملاحظة: أمر التشفير لا يتضمن خيار -text لأن الرسالة التي يجري تشفيرها تحتوي بالفعل على ترويسات MIME.

فك تشفير البريد:

 openssl smime -decrypt -in mail.msg -recip mycert.pem -inkey key.pem

المخرج من توقيع نماذج نيتسكيب (Netscape) هو هيكل PKCS#7 بتنسيق التوقيع المنفصل. يمكنك استخدام هذا البرنامج لفحص التوقيع عن طريق لف أسطر الهيكل المرمز بـ base64 وإحاطته بـ:

 -----BEGIN PKCS7-----
 -----END PKCS7-----

وباستخدام الأمر:

 openssl smime -verify -inform PEM -in signature.pem -content content.txt

بدلاً من ذلك، يمكنك فك ترميز التوقيع base64 واستخدام:

 openssl smime -verify -inform DER -in signature.der -content content.txt

أنشئ رسالة معمّاة باستخدام Camellia بـ 128 بت:

 openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem

أضف موقعًا إلى رسالة موجودة:

 openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.msg

العلل
محلل MIME ليس ذكيًا جدًا: يبدو أنه يتعامل مع معظم الرسائل التي ألقيتها عليه ولكنه قد يواجه صعوبة مع رسائل أخرى.

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

من الناحية المثالية، يجب صيانة قاعدة بيانات للشهادات لكل عنوان بريد إلكتروني.

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

لا يُجرى فحص للإبطال على شهادة الموقع.

يمكن للكود الحالي معالجة رسائل S/MIME v2 فقط، وقد تسبب هياكل S/MIME v3 الأكثر تعقيداً أخطاء في التحليل.

انظر أيضًا
ossl_store-file(7)

التاريخ
غُيرت شيفرة التعمية المبدئية من 3DES إلى AES-256 في OpenSSL 3.5.

تمت إضافة استخدام خيارات -signer المتعددة وأمر -resign لأول مرة في OpenSSL 1.0.0

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

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

حقوق النسخ
حقوق النشر 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.