
أداة مفتوحة المصدر لمساعدتك في بناء سلسلة شهادات SSL صالحة.
الوصف • طريقة الاستخدام • المعاملات • كيف يعمل • المتطلبات • أخرى • الترخيص
هي أداة مفتوحة المصدر لمساعدتك في بناء سلسلة شهادات SSL صالحة. يمكنها أيضًا مساعدتك في إصلاح السلسلة غير المكتملة وتنزيل جميع شهادات CA المفقودة. يمكنك أيضًا تنزيل جميع الشهادات من الخادم البعيد والحصول على سلسلة الشهادات الصحيحة.
الأمر بسيط:
# استنساخ هذا المستودع
git clone https://github.com/trimstray/mkchain
# الانتقال إلى المستودع
cd mkchain
# التثبيت
./setup.sh install
# تشغيل التطبيق
mkchain -i /data/certs -o /data/chain.crt
- يتم وضع الرابط الرمزي لـ
bin/mkchainفي/usr/local/bin- يتم وضع صفحة الدليل في
/usr/local/man/man8
يوفر الخيارات التالية:
الاستخدام:
mkchain <خيار|خيار-طويل>
أمثلة:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
الخيارات:
--help عرض هذه الرسالة
--debug عرض المعلومات على الشاشة (وضع التصحيح)
-i, --in إضافة الشهادات لدمجها (ملف، ملفات متعددة، دليل يحتوي على شهادات SSL
أو نطاق بعيد)
-o, --out حفظ النتيجة (السلسلة) في ملف
--with-root إضافة شهادة الجذر إلى سلسلة الشهادات
-o|--out- بدون هذا المعامل، يحفظmkchainالسلسلة الناتجة في دليلmkchain/chains/.
قبل القراءة، يرجى الاطلاع على المقال حول سلسلة شهادات SSL.
لنبدأ بسلسلة شهادات ssllabs. يتم تسليمها مع mkchain ويمكن العثور عليها في دليل example/ssllabs.com الذي يحتوي بالإضافة إلى ذلك على دليل all (الذي يحتوي على جميع الشهادات اللازمة لتجميع السلسلة) ودليل server_certificate (الذي يحتوي فقط على شهادة الخادم).
السلسلة الصحيحة لنطاق ssllabs.com (نتيجة أمر openssl):
سلسلة الشهادات
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
الكود أعلاه يعرض سلسلة كاملة تتكون من:
شهادة الهوية (شهادة الخادم)
صادرة عن ssllabs.com بواسطة Entrust Certification Authority - L1K
الشهادة الوسيطة
صادرة عن Entrust Certification Authority - L1K بواسطة Entrust Root Certification Authority - G2
الشهادة الوسيطة
صادرة عن Entrust Root Certification Authority - G2 بواسطة Entrust Root Certification Authority
شهادة الجذر (شهادة موقعة ذاتيًا)
صادرة عن Entrust Root Certification Authority بواسطة Entrust Root Certification Authority
في هذا السيناريو، سنقوم بتسلسل جميع الشهادات المقدمة. مثال على تشغيل الأداة:
في هذا السيناريو، نستخدم فقط شهادة الخادم ونستخدمها لاسترداد الشهادات المطلوبة المتبقية. ثم، كما هو مذكور أعلاه، سنقوم بدمج جميع الشهادات المقدمة. مثال على تشغيل الأداة:
من أجل إنشاء سلسلة صالحة، يجب تزويد الأداة بجميع الشهادات الضرورية (إذا قمت بتعيين دليل لمعامل -i|--in). ستكون:
هذا مهم جدًا لأنه بدونها لن تتمكن من تحديد بداية ونهاية السلسلة.
إذا قمت بتعيين ملف شهادة فقط كقيمة لـ
-i|--in، فإنmkchainيقوم تلقائيًا بتنزيل جميع الشهادات الضرورية.
ومع ذلك، إذا نظرت داخل السلسلة الناتجة بعد التوليد باستخدام mkchain، فلن تجد شهادة الجذر هناك.
لماذا؟ لأن شهادات الجذر الموقعة ذاتيًا لا تحتاج/لا ينبغي تضمينها في تكوين خادم الويب. لا تخدم أي غرض (سيتجاهلها العملاء دائمًا) وتسبب عبئًا طفيفًا في الأداء (زمن الاستجابة) لأنها تزيد من حجم المصافحة SSL.
إذا كنت ترغب في إضافة شهادة جذر إلى سلسلة الشهادات، فاستدع الأداة باستخدام المعامل --with-root.
يسمح mkchain باستخدام مسارين للتصديق:
عند توليد سلسلة الشهادات، يعرض mkchain تعليقات تحتوي على معلومات حول الشهادات، بما في ذلك أي أخطاء.
فيما يلي قائمة بجميع الاحتمالات:
تظهر الرسالة في حالة عدم وجود شهادة خادم تمثل بداية السلسلة. هذه حالة فريدة لأنه في هذه الحالة ينهي mkchain عمله بعرض هذه المعلومات فقط. شهادة الخادم هي الشهادة الوحيدة المطلوبة لإنشاء سلسلة بشكل صحيح. بدون هذه الشهادة، لن يتم إنشاء السلسلة الصحيحة.
الوضع المعاكس هنا - تظهر رسالة عند العثور على شهادة خادم صالحة.
تظهر هذه الرسالة عندما لا يتم العثور على أول شهادتين وسيطتين. لا تحدد هذه المعلومات صراحة عدم وجود شهادة وسيطة ثانية، ومن ناحية أخرى تسمح بتحديد ما إذا كانت الشهادة الوسيطة التي تم التوقيع على شهادة الخادم عليها موجودة. بالإضافة إلى ذلك، يمكن عرضها إذا تم تسليم الشهادة الوسيطة الثانية.
مماثلة لما سبق، ولكنها تتعلق بالشهادة الوسيطة الثانية. ومع ذلك، من الممكن إنشاء السلسلة بشكل صحيح باستخدام مسار التصديق الثاني، على سبيل المثال باستخدام الشهادة الوسيطة الأولى واستبدال الثانية بالشهادة الرئيسية.
تعني هذه الرسالة أن واحدة أو جميع الشهادات الوسيطة المطلوبة مفقودة، وتظهر في حالة عدم وجود شهادة الجذر.
تشير هذه الرسالة إلى عدد الشهادات الوسيطة الصالحة.
يتم التعامل مع عدم وجود شهادة الجذر كتحذير. بالطبع، عند تكوين الشهادات على جانب الخادم، لا يُنصح بإرفاق شهادة جذر، ولكن إذا قمت بإنشائها باستخدام mkchain، فإنه يتعامل مع السلسلة على أنها غير مكتملة ويعرض معلومات حول الإنشاء غير الصحيح للسلسلة.
لا تخبر هذه الرسالة عن الخطأ وعن عدم وجود حقل CN، والذي يمكن أن يحدث مع بعض الشهادات (انظر إلى example/google.com). حقل الاسم الشائع يحدد اسم المضيف المرتبط بالشهادة. لا يوجد شرط في RFC3280 أن يكون للمُصدر DN حقل CN. معظم CAs تتضمن CN في المُصدر DN، لكن البعض لا يفعل ذلك، مثل Equifax CA هذه.
يستخدم mkchain أدوات خارجية يجب تثبيتها قبل التشغيل:
تعمل هذه الأداة مع:
MacOS/FreeBSD:
pkg install getopt)greadlink من coreutils (مثبت عبر homebrew)انظر هذا.
انظر هذا.
GPLv3 : http://www.gnu.org/licenses/
برنامج حر، أجل!