سؤال كيف يمكنك إضافة مرجع مصدق (CA) إلى Ubuntu؟


لقد قررت عملي إصدار تقرير خاص بهم سلطة التصديق (CA) للتعامل مع جوانب مختلفة من عملنا بشكل آمن دون دفع ثمن الشهادات.

  • تشفير رسائل البريد الإلكتروني
  • تشفير محتويات البريد الإلكتروني
  • جعل الوصول إلى أشياء مثل الشركة IRC تعتمد على شهادة العميل.
  • إبطال مفاتيح الموظفين السابقين تلقائيا

أرسلوا لي .pem الملف ، وأنا لست متأكدا من كيفية إضافته إلى تثبيت أوبونتو الخاص بي. التعليمات المرسلة كانت: "يجب أن يؤدي النقر المزدوج عليه على جهاز Mac إلى تثبيته."

كيف أتابع؟ هل أنا بحاجة إلى القيام بشيء ما مع بينسل لخلق .key، .csrأو .crt ملف؟


137
2018-06-15 16:14


الأصل




الأجوبة:


تثبيت CA

نسخ الشهادة الخاصة بك بتنسيق PEM (التنسيق الذي يحتوي على ----BEGIN CERTIFICATE---- في ذلك) إلى /usr/local/share/ca-certificates وتسمية ذلك مع .crt امتداد الملف.

ثم اركض sudo update-ca-certificates.

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

اختبار CA

يمكنك التحقق مما إذا كان هذا ناجحًا عن طريق البحث عن الشهادة التي أضفتها للتو /etc/ssl/certs/ca-certificates.crt (وهي عبارة عن قائمة طويلة من كافة CA الخاصة بك الموثوق بها ومتسلسلة معاً).

يمكنك أيضًا استخدام s_client الخاص بـ OpenSSL عن طريق محاولة الاتصال بخادم تعرف أنه يستخدم شهادة موقعة من CA التي قمت بتثبيتها للتو.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

أول شيء يجب البحث عنه هو سلسلة الشهادات بالقرب من الجزء العلوي من الإخراج. يجب أن يظهر هذا المرجع المصدق كمصدر (بجوار i:). يخبرك هذا بأن الخادم يقدم شهادة موقعة من CA التي تقوم بتثبيتها.

ثانيا ، ابحث عن verify return code في النهاية لتعيين 0 (ok).


186
2018-02-19 19:13



هذا واحد يعمل في الواقع - Sabareesh Kkanan
نشكرك على ملاحظة أن firefox / chrome لا يستخدمان مخزن الشهادات الافتراضي. - shokora
لاحظ أن شهادات التحديث ca يمكن أن تكون صعب للغاية (ربما حسب التصميم). لم mycert.pem.crt لا تعمل ، ولكن فعلت mycert.crt. وأعتقد أيضا أنه يجب أن يكون / usr / local / share / ca-certificates ، وليس / usr / share / ca-certificates (على الرغم من التعليقات الواردة في /etc/ca-certificates.conf). - labyrinth
شكرا ل crt تعليق التمديد ، وهذا هو سر الحصول على هذا العمل بالنسبة لي ، أعطيت لي شهادة مع cert وتم الخلط بين لماذا لا يعمل شيء. - Ransom Briggs
واحد التحذير: s_client لا يرسل SNI بشكل افتراضي وقد يحتاج الخادم إلى SNI خاصة إذا كان يدعم مضيفين افتراضيين / مواقع بخرائط مختلفة ؛ لهذه الحالة تضيف -servername foo.whatever.com. أو إذا كان شبكة استخدام الخادم (الإصدارات الحديثة من) curl أو wget التي تقوم SNI تلقائيا. - dave_thompson_085


رجل التحديث كاليفورنيا الشهادات:

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates certificates.crt,
a concatenated single-file list of certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname
of  a  CA  certificate  under /usr/share/ca-certificates that should be
trusted.  Lines that begin with "#" are comment lines and thus ignored.
Lines  that  begin with "!" are deselected, causing the deactivation of
the CA certificate in question.

Furthermore   all   certificates   found   below   /usr/local/share/ca-
certificates are also included as implicitly trusted.

من المذكور أعلاه ، استنتج أن الطريقة المفضلة للحصول على ملفات الشهادات المحلية في المتجر الموثوق به هي وضعها /usr/local/share/ca-certificatesثم قم بتشغيل update-ca-certificates. لا تحتاج للمس /etc/ssl/certs مباشرة.


56
2018-06-15 18:07



يبدو أن تسمية الشهادات ذات امتدادات .crt مطلوبة أيضًا. - phyzome
شكرًا لملاحظةphyzome - لم يكن بمقدوري إضافة شهادتي إلى غير ذلك. - Seiyria


كان لي نفس المشكلة ، واضطررت إلى نسخ .pem ملف ل /usr/local/share/ca-certificates، إعادة تسمية ذلك باسم .crt. ال .cer يمكن بسهولة تحويل الملف إلى .pem، مع openssl ، على سبيل المثال ، إذا لم يكن لديك .pem.

بعد نسخ الملف يجب أن تنفذ sudo update-ca-certificates.


15
2018-04-30 13:39



openssl x509 -inform DER -in certificate.cer -out certificate.crt - webwurst


الاجابات الاخرى بخصوص update-ca-certificates صحيحة للتطبيقات التي تقرأ من مخزن شهادات النظام. بالنسبة للمتصفح Chrome و Firefox ، وربما البعض الآخر ، يجب وضع الشهادة في nssdb ، الواجهة الخلفية لمكتبة Mozilla NSS.

من عند https://code.google.com/p/chromium/wiki/LinuxCertManagement:

على سبيل المثال ، للوثوق بشهادة المرجع المصدق الجذر لإصدار شهادات خادم SSL ، استخدم

certutil -d sql: $ HOME / .pki / nssdb -At "C" ، -n <اسم الشهرة> -i <شهادة اسم الملف>

أين <certificate nickname> هو تعسفي ، و <certificate filename> هو ملف .pem أو .crt الخاص بك.

مراجع مفيدة أخرى:


12
2017-10-10 18:46



شكر. يعمل على Ubuntu 16.04 لـ Chrome 53.0.2785.143 ، ولكن يبدو أن Firefox 49 يحتوي على مخزن منفصل db ويجب إضافته من حول: التفضيلات # المتقدمة [View Certiticates] -> [السلطات] -> [استيراد] المزيد حول متجر فايرفوكس. askubuntu.com/a/248326/535154 - mauron85
بالمناسبة ، إذا كنت ترغب في تثبيت شهادة قبل لأول مرة من Chrome (على سبيل المثال بينما لا يزال .pki / dir مفقودًا) ، يجب عليك أولاً إنشاء nssdb: mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password - akavel
هناك طريقة للحصول على Chrome و Firefox للقراءة من مخزن شهادات النظام. انظر جوابي: superuser.com/a/1312419/506107 - wheeler


بالنسبة إلى الإصدارات الأحدث استنادًا إلى دبيان ، قد تحتاج إلى تشغيل:

sudo dpkg-reconfigure ca-certificates

ملاحظة: sudo dpkg-reconfigure ca-certificates calls update-ca-certificates داخليًا

ستحتاج بالطبع إلى نسخ الشهادة (ملف .crt) إلى / usr / share / ca-certificates قبل القيام بأي من هذا :)


8
2017-09-02 06:19





بناء على dwmw2 إجابة، يمكنك بالفعل معرفة التطبيقات التي تستخدم NSS لإدارة الشهادة الخاصة بها لاستخدام مخزن الثقة بالنظام.

libnss3 بشكل افتراضي مع مجموعة للقراءة فقط من شهادات CA الجذر (libnssckbi.so) ، لذلك في معظم الوقت تحتاج إلى إضافتها بنفسك يدويًا إلى مخزن ثقة المستخدم المحلي الموجود في $HOME/.pki/nssdb. p11-kit تقدم بديل في ل libnssckbi.so يعمل كمحول لشهادات الجذر على مستوى النظام المثبتة في /etc/ssl/certs.

تصحيح:

يبدو أن هناك المزيد من إصدارات libnssckbi.so هناك من فقط في libnss3. ما يلي هو برنامج نصي للعثور عليهم جميعًا ، والنسخ الاحتياطي لهم ، واستبدالهم بروابط p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

التعليمات الأصلية:

للقيام بذلك ، قم بتثبيت p11-kit و libnss3 (إذا لم تكن قد حُفرت بالفعل):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

ثم النسخ الاحتياطي القائمة libnssckbi.so المقدمة من قبل libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

أخيرًا ، أنشئ الرابط الرمزي:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

للتأكد من أنها تعمل ، يمكنك تشغيل ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so ويجب أن تظهر الرابط:

lrwxrwxrwx 1 root root 49 Apr  9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

الآن ، إذا قمت بإضافة شهادة إلى مخزن CA باستخدام update-ca-certificates، ستكون هذه الشهادات متاحة الآن للتطبيقات التي تستخدم NSS (libnss3) مثل Chrome.


1
2018-04-10 01:00





كما لوحظ ، فإن العديد من التطبيقات التي تستخدم NSS لها مخزن شهادات خاص بها. عندما تقف الأشياء على Ubuntu ، عليك أن تستخدم يدوياً certutil لإضافة المراجع المصدقة الخاصة بك لكل تطبيق ، لكل مستخدم.

في توزيعات أخرى مثل Fedora ، هذا النوع من الأشياء Just Works ويجب عليك تقديم خطأ ضد أي تطبيقات لا تثق تلقائيًا في CA التي تقوم بتثبيتها update-ca-trust.

يمكنك إصلاح هذا في أوبونتو أيضا عن طريق تثبيت p11-kit-modules حزمة ثم استبدال NSS المدمج في جذور الثقة وحدة مع p11-kit-trust.so، من خلال جعل رابط رمزي على سبيل المثال من /usr/lib/firefox/libnssckbi.so إلى /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

ثم أنت سوف الحصول على جذور الثقة في النظام المكوّنة ، وليس بعض العناصر المشفرة. لاحظ أن سفن Ubuntu متعددة مختلف نسخ من تلك المكتبة libnssckbi.so مع جذور الثقة المشفرة ، وعليك أن تحل محل كل منهم!

راجع https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285


1
2017-12-12 12:36



عندما فعلت sudo find / -type f -name "libnssckbi.so"، وجدت libnssckbi.so في ثلاثة أماكن: /usr/lib/thunderbird/، /usr/lib/firefox/و /usr/lib/x86_64-linux-gnu/nss/. لذلك أنت تقول أنني يجب أن تربط libnssckbi.so في كل ثلاثة من تلك المجلدات ل p11-kit-trust.so؟ - wheeler
حسنا ، أكدت فقط أن ربط /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so عملت مثل سحر. تمكنت من إضافة شهادة إلى /usr/local/share/ca-certificates، يركض sudo update-ca-certificatesو PRESTO ، بدأ Chrome في قبول الشهادات الموقعة ذاتيًا. - wheeler


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

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy                                                     CT,, 
rootCA                                                       CT,, 
myasos                                                       CT,, 

ولكن لا يزال ، في الكروم لا شيء يعمل. حاولت كل شيء ، في النهاية ....

Restarting Chrome 

كان مفتاح نجاحي بعد اتباع: ستيفن الاثنيننصيحة


0
2018-01-02 12:58