التشفير في جافا. Keytool المساعدة

مرحبا يا هبر! أقدم إليكم ترجمة المقال العاشر "Java Keytool" لجاكوب جينكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.


جدول المحتويات:


  1. تشفير جافا
  2. تشفير جافا
  3. MessageDigest
  4. ماك
  5. توقيع
  6. KeyPair
  7. KeyGenerator
  8. KeyPairGenerator
  9. تخزين المفاتيح
  10. Keytool
  11. شهادة
  12. CertificateFactory
  13. CertPath

Keytool المساعدة


Java Keytool هي أداة لسطر الأوامر يمكنها إنشاء أزواج مفاتيح عامة / مفاتيح خاصة وتخزينها في لوحة مفاتيح . يتم توزيع ملف الأداة المساعدة القابل للتنفيذ مع Java SDK (أو JRE) ، لذلك إذا كان لديك SDK مثبتًا ، فسيتم أيضًا تثبيته مسبقًا.
يسمى الملف التنفيذي keytool . لتنفيذه ، افتح موجه الأوامر (cmd ، وحدة التحكم ، shell ، إلخ). وقم بتغيير الدليل الحالي إلى دليل bin في دليل تثبيت Java SDK. اكتب keytool ، ثم اضغط على Enter . يجب أن ترى شيئًا مشابهًا لهذا:


 C:\Program Files\Java\jdk1.8.0_111\bin>keytool Key and Certificate Management Tool Commands: -certreq Generates a certificate request -changealias Changes an entry's alias -delete Deletes an entry -exportcert Exports certificate -genkeypair Generates a key pair -genseckey Generates a secret key -gencert Generates certificate from a certificate request -importcert Imports a certificate or a certificate chain -importpass Imports a password -importkeystore Imports one or all entries from another keystore -keypasswd Changes the key password of an entry -list Lists entries in a keystore -printcert Prints the content of a certificate -printcertreq Prints the content of a certificate request -printcrl Prints the content of a CRL file -storepasswd Changes the store password of a keystore Use "keytool -command_name -help" for usage of command_name C:\Program Files\Java\jdk1.8.0_111\bin> 

كما ترى ، تدعم الأداة المساعدة keytool مجموعة من الأوامر للعمل مع المفاتيح والشهادات ومتاجر المفاتيح. سيغطي هذا الدليل أكثر هذه الأوامر استخدامًا.


مخطوطات Keytool


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


جيل زوج الرئيسية


يعد إنشاء زوج مفاتيح (المفتاح العمومي / المفتاح الخاص) أحد أكثر المهام شيوعًا التي يتم استخدام الأداة المساعدة Keytool . يتم إدراج زوج المفاتيح الذي تم إنشاؤه في ملف KeyStore كزوج مفاتيح موقّع ذاتيًا. فيما يلي تنسيق سطر أوامر مشترك لإنشاء زوج مفاتيح:


 -genkeypair -alias alias -keyalg keyalg -keysize keysize -sigalg sigalg -dname dname -keypass keypass -validity valDays -storetype storetype -keystore keystore -storepass storepass -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption 

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


 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -importcert -alias testkey -keypass 123456 -storetype JKS -keystore keystore2.jks -file cert.cert -rfc -storepass abcdef 

قائمة سجلات المدفن


لسرد الإدخالات في لوحة المفاتيح ، يمكنك استخدام أمر list . يوجد أدناه تنسيق أمر list . المقصود فواصل الأسطر لتكون سهلة القراءة. إزالة فواصل الأسطر قبل تنفيذ الأمر:


 -list -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -rfc -protected -Jjavaoption 

فيما يلي مثال list الأوامر. تذكر إزالة فواصل الأسطر!


 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -storetype JKS -keystore keystore.jks -storepass abcdef 

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


 Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry testkey, 19-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 4F:4C:E2:C5:DA:36:E6:A9:93:6F:10:36:9E:E5:E8:5A:6E:F2:11:16 

إذا قمت بتضمين وسيطة alias في أمر list ، فسيتم إدراج فقط الإدخال الذي يطابق الاسم المستعار المحدد. فيما يلي أمر list سبيل المثال مع وسيطة alias :


 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef 

نتيجة الأمر أعلاه:


 testkey, 15-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 71:B0:6E:F1:E9:5A:E7:F5:5E:78:71:DC:08:80:47:E9:5F:F8:6D:25 

حذف إدخال keystore


يوجد أيضًا في الأداة المساعدة keytool أمر يمكنه حذف إدخال من keystore: delete . هنا هو تنسيق هذا الأمر:


 -delete -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption 

هنا مثال على delete الدعوة. تذكر إزالة فواصل الأسطر قبل البدء!


 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -delete -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef 

يحذف هذا الأمر إدخال المستودع بواسطة testkey الاسم المستعار المخزن في ملف keystore.jks .


طلب شهادة جيل


الأداة المساعدة keytool يمكن إنشاء طلب شهادة باستخدام certreq . طلب الشهادة هو طلب إلى مرجع مصدق (CA) لإنشاء شهادة عامة لمؤسستك. بعد إنشاء طلب شهادة ، يجب إرساله إلى المرجع المصدق حيث تريد إنشاء الشهادة (على سبيل المثال ، Verisign ، Thawte أو بعض المرجع الآخر). قبل أن تتمكن من إنشاء طلب شهادة لمفتاح خاص وزوج من المفاتيح العامة ، يجب عليك إنشاء هذا المفتاح الخاص وزوج من المفاتيح العامة في مخزن المفاتيح (أو استيراده). كيفية القيام بذلك يمكن العثور عليها في الفصل المقابل. هنا هو تنسيق الأمر لإنشاء طلب الشهادة. تذكر إزالة جميع فواصل الأسطر عند استخدام هذا الأمر:


 -certreq -alias alias -sigalg sigalg -file certreq_file -keypass keypass -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption 

فيما يلي مثال -certreq :


 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -certreq -alias testkey -keypass 123456 -storetype JKS -keystore keystore.jks -storepass abcdef -file certreq.certreq 

سيقوم هذا الأمر بإنشاء طلب شهادة لمفتاح يتم حفظه بواسطة testkey الاسم المستعار في ملف keystore.jks وكتابة طلب الشهادة إلى ملف يسمى certreq.certreq .


الحجج فائدة Keytool


فيما يلي قائمة keytool التي keytool أوامر keytool المختلفة. تذكر أن الفرق لا تقبل جميع هذه الحجج. انظر إلى أمر محدد لترى الحجج التي يتطلبها الأمر.


  • - الاسم المستعار لدخول -alias . تذكر الاسم المستعار
    يمكن أن تشير إلى مفتاح واحد فقط.
  • -keyalg اسم الخوارزمية المستخدمة لإنشاء المفتاح. يشيع استخدامها RSA.
  • - حجم مفتاح الحجم بالبت. عادة ، أحجام المفاتيح متعددة. بالإضافة إلى ذلك ، يمكن أن تدعم الخوارزميات المختلفة فقط أحجام مفاتيح محددة مسبقًا.
  • -sigalg خوارزمية التوقيع المستخدمة لتوقيع زوج المفاتيح.
  • اسم فريد من معيار X.500. سيتم ربط هذا الاسم بـ
    اسم مستعار لهذا الزوج الرئيسي في لوحة المفاتيح ، أيضا
    تستخدم كحقول "مُصدر" و "موضوع" في التوقيع الذاتي
    الشهادة.
  • مفتاح كلمة المرور زوج-مفتاح المطلوبة ل
    الوصول إلى هذا الزوج مفتاح معين في keystore.
  • -validity عدد الأيام التي يتم خلالها الشهادة
    يجب أن تكون متصلة زوج المفاتيح صالحة.
  • -storetype تنسيق الملف الذي يجب حفظ -storetype . الافتراضي هو JKS. خيار آخر هو تنسيق PKCS11.
  • -keystore اسم ملف المستودع لتخزين الزوج الذي تم إنشاؤه
    مفاتيح. إذا كان الملف غير موجود ، فسيتم إنشاؤه.
  • -file اسم الملف لقراءة أو كتابة شهادة أو طلب شهادة.
  • -storepass كلمة المرور من keystore ، إلى أي شخص يريد العمل
    مع ذلك ، تحتاج إلى كلمة المرور هذه. الفرق بين storepass و keypass في
    أن الأول يوفر الوصول إلى مستودع ، والثاني إلى منفصل
    زوج من المفاتيح. ستحتاج كلتا كلمات المرور للوصول إلى أي مفتاح ،
    تخزينها في التخزين.
  • -rfc إذا قمت بتمكين هذه العلامة ، -rfc الأداة المساعدة تنسيقًا نصيًا بدلاً من تنسيق ثنائي ، على سبيل المثال ، لتصدير الشهادات أو استيرادها. قيمة -ffc
    يشير إلى RFC 1421.
  • -providerName اسم موفر API للتشفير الذي تريد استخدامه عند إنشاء زوج المفاتيح. يجب تحديد اسم الموفر في ملفات خصائص أمان Java.
  • -providerClass - اسم فئة الجذر لموفر واجهة برمجة تطبيقات التشفير التي تريد استخدامها. يتم استخدامه عند عدم تحديد اسم الموفر في ملفات خصائص أمان Java.
  • -providerArg تم تمرير الوسائط إلى موفر التشفير الخاص أثناء التهيئة (إذا لزم الأمر من قبل الموفر).
  • -v Short for verbose ، ستقوم Keytool بطباعة الكثير من المعلومات الإضافية إلى سطر الأوامر بتنسيق قابل للقراءة.
  • -protected لتحديد ما إذا كان يجب توفير كلمة مرور مفتاح التشغيل بواسطة آلية خارجية ، على سبيل المثال ، رمز مميز للجهاز. القيم الصالحة صحيحة وكاذبة.
  • -Jjavaoption سلسلة خيارات لـ Java VM تقوم بإنشاء زوج مفاتيح وإنشاء تخزين.

Source: https://habr.com/ru/post/ar446322/


All Articles