الشهادات الأساسية والوسيطة لسلطات إصدار الشهادات المعتمدة في روسيا

مثل العديد من البلدان الأخرى ، تستخدم روسيا شهادات x509 الصادرة عن سلطات إصدار الشهادات الروسية (UC) المعتمدة لإدارة المستندات الإلكترونية الرسمية. وخلافا للعديد من البلدان الأخرى ، فإنه يستخدم شفراته الخاصة.

لفترة طويلة كنت أرغب في أتمتة التحقق من التوقيعات على إجابات السلطات (أنا أوافق كثيرًا) والتحقق من "تفريغ" Roskomnadzor من أجل المصداقية (حسب طبيعة النشاط العام). كانت المشكلة الأكبر هي الحصول على شهادات وسيطة من السلسلة. لأنه كان هناك ملف Excel مشوش لمصادر الشهادات الجذر على موقع الويب لوزارة الاتصالات وهذا كل شيء. ويجب البحث عن المواقع الوسيطة على مواقع CAs المعنية. الحياة ألم.
ما هي "الشهادات المتوسطة" . دعني أذكرك كيف يعمل. لنفترض أننا نريد التحقق من بعض الرسائل الموقعة. الرسالة موقعة بمفتاح. توجد شهادة تصادق على هذا المفتاح. تم إصدار الشهادة من قبل شخص ما وتم توقيعها أيضًا بواسطة مفتاح مع الشهادة المرفقة. وهذه الشهادة هي نفسها تمامًا. وهكذا حتى لحظة إصدار الشهادة لنفسها. عند التحقق ، قمنا (بإحضار ، تسليمها من الحزمة ، تم إعطاؤنا محرك أقراص محمول) مجموعة معينة من هذه الشهادات النهائية ، والتي نعتقد. نحن نؤمن لأننا نؤمن بمن أعطانا إياها. في عالم الويب ، نثق في المتصفح ومجموعة شهادات الجذر الخاصة به. في عالم الويب ، عند الاتصال عبر HTTPS ، يتم أيضًا نقل الشهادات المتوسطة من خادم إلى عميل. لذلك ، في عالم الويب ، لدينا دائمًا السلسلة الكاملة.
فجأة (لا أعرف بالضبط متى) وبشكل غير محسوس على موقع الويب الخاص بخدمة الدولة ظهر مثل هذا الرابط:
e-trust.gosuslugi.ru/CA

لقد كتبت على عجل برنامجًا يحول ملف XML مع قائمة CAs والشهادات من هذا الموقع إلى تنسيق PEM المألوف.

ثم قمت بأتمتته تلقائيًا وحصلت على مستودع شهادات يتم الحفاظ عليه باستمرار في شكل مألوف لعالم * NIX.

تشفير GOST


تشفير GOST مدعوم في LibreSSL ، ولا أتذكر أي إصدار. ولكن في Alpine Linux من 3.5 مدعوم بالفعل. مع OpenSSL ، تصبح الأمور أكثر تعقيدًا. يأتي تشفير GOST مع OpenSSL من الإصدار 1.0.0 إلى الإصدار 1.0.2. ولكن على سبيل المثال ، لا يحتوي CentOS على تشفير GOST. يجب أن يعاني مستخدمو CentOS. بالنسبة إلى Debian و Mint و Ubuntu مع OpenSSL الإصدار 1.1.0 والإصدارات الأحدث ، يلزم تثبيت حزمة libengine-gost-openssl1.1 ، مدعومًا بعشاق التشفير Vartan Khachaturov (بالمناسبة ، يمكنك مساعدته).

حسنًا ، في 2018 لدينا Docker ، وفي Alpine Linux ، كما ذكرت ، كل شيء يعمل.

كيفية استخدامه


أمثلة قصيرة للتحقق من "تفريغ" Roskomnadzor بتوقيع غير منقطع. ملف "التحميل" هو dump.xml ، والتوقيع بدون علامات هو dump.xml.sig. حتى أنني راجعتهم من قبل فقط على سلامة التوقيع ، ولكن ليس على المراسلات مع المصدر.

باستخدام OpenSSL:

git clone https://github.com/schors/gost-russian-ca.git ./ openssl smime -verify -engine gost \ -CAfile gost-russian-ca.git/certs/ca-certificates.pem \ -in dump.xml.sig -inform DER -content dump.xml -out /dev/null 

باستخدام LibreSSL:

 git clone https://github.com/schors/gost-russian-ca.git ./ openssl smime -verify -CAfile gost-russian-ca.git/certs/ca-certificates.pem \ -in dump.xml.sig -inform DER -content dump.xml -out /dev/null 

وبالطبع ، يمكنك استخدام الأداة المساعدة c_rehash في مجلد certs ، ثم استخدام الخيار -CAdir بدلاً من -ملف.

ومن الآن فصاعدًا ، لا يمكنك استخدام موقع ويب State Service و Contour والبرامج الغريبة مثل CryptoPro لمهمة بسيطة تتمثل في التحقق من التوقيع. والأهم من ذلك ، أنه من الممكن أتمتة الآن.

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


All Articles