आप उबंटू में एक प्रमाणपत्र प्राधिकरण (सीए) कैसे जोड़ सकते हैं?


166

मेरे काम ने प्रमाणपत्रों के भुगतान के बिना सुरक्षित रूप से हमारे काम के विभिन्न पहलुओं को संभालने के लिए अपने स्वयं के प्रमाण पत्र प्राधिकरण (सीए) जारी करने का निर्णय लिया है ।

  • क्रिप्टोग्राफिक रूप से ईमेल पर हस्ताक्षर करें
  • ईमेल सामग्री एन्क्रिप्ट करें
  • आईआरसी क्लाइंट-सर्टिफिकेट आधारित कंपनी जैसी चीजों तक पहुंच बनाएं ।
  • पूर्व कर्मचारियों की चाबियाँ स्वचालित रूप से रद्द करें

उन्होंने मुझे एक .pemफ़ाइल भेजी , और मुझे यकीन नहीं है कि इसे मेरे उबंटू इंस्टॉल में कैसे जोड़ा जाए। भेजे गए निर्देश थे: "मैक पर डबल क्लिक करके इसे इंस्टॉल करना चाहिए।" 

मैं कैसे आगे बढ़ूं? मैं के साथ कुछ करने की जरूरत है OpenSSL एक बनाने के लिए .key, .csrया .crtफाइल?


1
टिप्पणी "भेजे गए निर्देश थे: \" एक मैक पर डबल-क्लिक करके इसे स्थापित करना चाहिए। \ "" ने मेरा दिन बना दिया
mzoll

जवाबों:


231

एक CA स्थापित कर रहा है

अपने प्रमाणपत्र को PEM प्रारूप (इसमें जो प्रारूप है ----BEGIN CERTIFICATE----) में कॉपी करें /usr/local/share/ca-certificatesऔर इसे .crtफ़ाइल एक्सटेंशन के साथ नाम दें ।

फिर चला sudo update-ca-certificates

कैविट्स: यह इंस्टॉलेशन केवल उन उत्पादों को प्रभावित करता है जो इस सर्टिफिकेट स्टोर का उपयोग करते हैं। कुछ उत्पाद अन्य प्रमाणपत्र स्टोर का उपयोग कर सकते हैं; यदि आप उन उत्पादों का उपयोग करते हैं, तो आपको इस CA प्रमाणपत्र को उन अन्य प्रमाणपत्र स्टोरों में भी जोड़ना होगा। ( फ़ायरफ़ॉक्स निर्देश , क्रोम निर्देश , जावा निर्देश )

सीए का परीक्षण

यदि आप उस प्रमाणपत्र की तलाश करके काम कर सकते हैं जो आपने अभी-अभी जोड़े हैं /etc/ssl/certs/ca-certificates.crt(जो आपके भरोसेमंद सीए के सभी एक साथ शामिल होने की लंबी सूची है)।

आप OpenSSL के s_client का उपयोग उस सर्वर से कनेक्ट करने का प्रयास करके भी कर सकते हैं जिसे आप जानते हैं कि 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)


3
यह वास्तव में काम करता है
सबरेश कंकन

1
ध्यान दें कि फ़ायरफ़ॉक्स / क्रोम डिफ़ॉल्ट सर्टिफिकेट स्टोर का उपयोग नहीं करता है।
टिम स्ट्रीजहोर्स्ट

4
ध्यान दें कि अपडेट-कै-सर्टिफिकेट बहुत बारीक हो सकता है (शायद डिजाइन द्वारा)। mycert.pem.crt ने काम नहीं किया, लेकिन mycert.crt ने किया। मुझे यह भी लगता है कि इसके लिए / usr / लोकल / शेयर / सीए-सर्टिफिकेट होना चाहिए, न कि usr / शेयर / सीए-सर्टिफिकेट (इसके बावजूद कि /etc/ca-cert प्रमाणपत्र.conf में क्या टिप्पणी की गई)।
भूलभुलैया

2
crtविस्तार टिप्पणी के लिए धन्यवाद , मेरे लिए यह काम पाने का रहस्य था, मुझे एक certएक्सटेंशन के साथ एक प्रमाण पत्र दिया गया था और इस उलझन में था कि कुछ भी काम क्यों नहीं कर रहा था।
फिरौती ब्रिग्स

3
एक कैविएट: s_clientएसएनआई को डिफ़ॉल्ट रूप से नहीं भेजता है और सर्वर को एसएनआई की आवश्यकता हो सकती है, खासकर अगर यह विभिन्न होस्ट के साथ वर्चुअल होस्ट / साइट का समर्थन करता है; इस मामले में जोड़ें -servername foo.whatever.com। या अगर यह एक वेब सर्वर का उपयोग (आधुनिक संस्करण) है curlया wgetजो एसएनआई स्वचालित रूप से करता है।
dave_thompson_085

65

आदमी अपडेट-सीए-प्रमाण पत्र :

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सीधे छूने की आवश्यकता नहीं है ।


23
.Crt एक्सटेंशन के साथ प्रमाणपत्रों का नामकरण भी आवश्यक लगता था।
फिज़ोम

नोट के लिए धन्यवाद @phyzome - अन्यथा मेरा प्रमाणपत्र जोड़ने में सक्षम नहीं होगा।
सियारिया

मुझे --freshइसे काम करने के लिए जोड़ना था । जैसेupdate-ca-certificates --fresh
एलिजा लिन

15

मेरे पास एक ही मुद्दा था, और मुझे .pemफ़ाइल को कॉपी करना था /usr/local/share/ca-certificates, इसे नाम बदलना .crt.cerफ़ाइल को आसानी से करने के लिए परिवर्तित किया जा सकता है .pem, openssl साथ, उदाहरण के लिए, यदि आप की जरूरत नहीं है .pem

फ़ाइल को कॉपी करने के बाद आपको निष्पादित करना होगा sudo update-ca-certificates


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

14

update-ca-certificatesसिस्टम सर्टिफिकेट स्टोर से पढ़े जाने वाले एप्लिकेशन के संबंध में अन्य उत्तर सही हैं। क्रोम और फ़ायरफ़ॉक्स, और शायद कुछ अन्य लोगों के लिए, प्रमाणपत्र को nssdb में रखा जाना चाहिए, मोज़िला एनएसएस लाइब्रेरी के लिए बैकएंड।

से https://code.google.com/p/chromium/wiki/LinuxCertManagement :

उदाहरण के लिए, SSL सर्वर प्रमाणपत्र जारी करने के लिए रूट CA प्रमाणपत्र पर भरोसा करने के लिए, उपयोग करें

सर्टिफिकेट -d sql: $ HOME / .pki / nssdb -A -t "C ,,," -n <प्रमाणपत्र उपनाम> -i <प्रमाणपत्र फ़ाइल नाम>

जहां <certificate nickname>मनमाना है, और <certificate filename>आपकी .pem या .crt फ़ाइल है।

अन्य उपयोगी संदर्भ:


धन्यवाद। यह क्रोम 53.0.2785.143 के लिए उबंटू 16.04 पर काम करता है, लेकिन फ़ायरफ़ॉक्स 49 के लिए अलग स्टोर डीबी लगता है और इसमें से जोड़ा जाना चाहिए: वरीयताएँ # उन्नत [देखें प्रमाण पत्र] -> [प्राधिकरण] -> [आयात] फायर सर्टिफिकेट स्टोर के बारे में अधिक। 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

सिस्टम सर्टिफिकेट स्टोर से पढ़ने के लिए क्रोम और फ़ायरफ़ॉक्स प्राप्त करने का एक तरीका है। मेरा उत्तर देखें: superuser.com/a/1312419/506107
व्हीलर

11

डेबियन पर आधारित नए बिल्ड के लिए, आपको चलाने की आवश्यकता हो सकती है:

sudo dpkg-reconfigure ca-certificates

नोट: sudo dpkg-reconfigure सीए-सर्टिफिकेट कॉल-अपडेट-सर्टिफिकेट को आंतरिक रूप से कहते हैं

इससे पहले कि आप इस तरह का कोई भी काम करें, आपको निश्चित रूप से प्रमाणपत्र (.crt फ़ाइल) को / usr / share / ca-प्रमाणपत्र में कॉपी करना होगा


3

Dwmw2 के उत्तर पर निर्माण , आप वास्तव में उन अनुप्रयोगों को बता सकते हैं जो सिस्टम ट्रस्ट स्टोर का उपयोग करने के लिए अपने प्रमाणपत्र प्रबंधन के लिए एनएसएस का उपयोग करते हैं।

libnss3डिफ़ॉल्ट सीए द्वारा केवल रूट सीए सर्टिफिकेट ( 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) जैसे क्रोम का उपयोग करके अनुप्रयोगों के लिए उपलब्ध होंगे ।


1

जैसा कि कहा गया है, एनएसएस का उपयोग करने वाले विभिन्न अनुप्रयोगों का अपना प्रमाणपत्र स्टोर है। जैसा कि चीजें उबंटू पर खड़ी हैं, आपको certutilप्रत्येक उपयोगकर्ता के लिए अपने सीए को जोड़ने के लिए मैन्युअल रूप से उपयोग करना होगा।

फेडोरा जैसे अन्य वितरणों में, इस तरह का काम जस्ट वर्क्स ™ है और आपको किसी भी एप्लिकेशन के खिलाफ बग दर्ज करना चाहिए जो आपके द्वारा स्थापित सीए पर स्वचालित रूप से भरोसा नहीं करता है update-ca-trust

आप इसे उबंटू में भी p11-kit-modulesपैकेज को स्थापित करके ठीक कर सकते हैं और फिर उदाहरण के लिए प्रतीकात्मक लिंक बनाकर एनएसएस में निर्मित ट्रस्ट रूट्स मॉड्यूल को बदल सकते हैं।p11-kit-trust.so/usr/lib/firefox/libnssckbi.so/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

तो फिर तुम जाएगा प्रणाली के विश्वास की जड़ें कॉन्फ़िगर किया गया है, कुछ हार्ड-कोडेड वाले नहीं मिलता है। ध्यान दें कि उबंटू हार्ड-कोडेड ट्रस्ट जड़ों के साथ उस libnssckbi.so पुस्तकालय की कई अलग-अलग प्रतियों को जहाज करता है , और आपको उन सभी को बदलना होगा!

सीएफ https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285


जब मैंने किया था 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?
व्हीलर

1
ठीक है, बस पुष्टि की कि लिंकिंग /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 ने स्व-हस्ताक्षरित प्रमाणपत्र स्वीकार करना शुरू कर दिया।
व्हीलर

0

यहां जोड़ने के लिए गंभीर रूप से मूर्खतापूर्ण जवाब है, लेकिन मैंने 2 घंटे बिताए थे, जो कि linux में 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

निम्नलिखित के बाद मेरी सफलता की कुंजी थी: स्टीवन सोमवार की सलाह

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.