"विश्वसनीय सूची" में एक स्व-हस्ताक्षरित प्रमाणपत्र जोड़ना


87

मैंने अपने बिल्ड सर्वर के लिए एक स्व-हस्ताक्षरित प्रमाण पत्र बनाया है और मैं विश्व स्तर पर अपनी मशीन पर प्रमाण पत्र पर भरोसा करना चाहता हूं, क्योंकि मैंने खुद कुंजी बनायी है और मैं चेतावनी देखकर बीमार हूं।

मैं Ubuntu 12.04 पर हूं। मैं प्रमाण पत्र कैसे ले सकता हूं और विश्व स्तर पर इस पर भरोसा कर सकता हूं ताकि ब्राउज़र (Google Chrome), CLI उपयोगिताओं (wget, कर्ल), और प्रोग्रामिंग भाषाओं (पायथन, जावा, आदि) बिना पूछे https://mysite.com के कनेक्शन पर भरोसा करें। प्रशन?


सभी टीएलएस को ओपनएसएसएल के माध्यम से जोड़ा जाना चाहिए, ताकि दस्तावेज देखने के लिए जगह हो। इस स्थिति में: gagravarr.org/writing/openssl-certs/… उपयोगी लगता है।
msw

जवाबों:


87

इसका सरल उत्तर यह है कि बहुत अधिक प्रत्येक एप्लिकेशन इसे अलग तरीके से हैंडल करेगा।

इसके अलावा ओपनएसएसएल और जीएनयूटीएलएस (हस्ताक्षरित प्रमाणपत्रों को संभालने के लिए इस्तेमाल किया जाने वाला सबसे व्यापक रूप से इस्तेमाल किया जाने वाला सर्टिफिकेट लाइब्रेरियों) सेर्ट्स के अपने उपचार में अलग तरह से व्यवहार करता है जो इस समस्या को भी जटिल करता है। अधिकांश वेबसाइटों द्वारा उपयोग किए जाने वाले "रूट CA" का उपयोग करने के लिए भी ऑपरेटिंग सिस्टम विभिन्न तंत्रों का उपयोग करते हैं।

एक तरफ, डेबियन को एक उदाहरण के रूप में देना। ca-certificatesपैकेज स्थापित करें :

apt-get install ca-certificates

आप तब अपने अविश्वासित सीए सर्टिफिकेट (जिसको आप अपने सीएसआर पर हस्ताक्षर करने के लिए इस्तेमाल करते हैं) के आधे हिस्से को सीए सर्टिफिकेट डायरेक्टरी (रूट के रूप में) में कॉपी करते हैं:

cp cacert.pem /usr/share/ca-certificates

और इसे अपने प्रमाणपत्र के साथ निर्देशिका के पुनर्निर्माण के लिए प्राप्त करें, रूट के रूप में चलाएं:

dpkg-reconfigure ca-certificates

और askविकल्प चुनें, अपने प्रमाणपत्र पर स्क्रॉल करें, इसे शामिल करने के लिए चिह्नित करें और ठीक चुनें।

अधिकांश ब्राउज़र अपने स्वयं के CA डेटाबेस का उपयोग करते हैं, और इसलिए certutilउनकी सामग्री को संशोधित करने के लिए उपयोग किया जाना चाहिए ( libnss3-toolsपैकेज द्वारा प्रदान की गई डेबियन पर )। उदाहरण के लिए, Chrome के साथ आप निम्न के साथ कुछ चलाते हैं:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

फ़ायरफ़ॉक्स आपको डिस्क पर प्रमाण पत्र को ब्राउज़ करने की अनुमति देगा, इसे एक प्रमाण पत्र फ़ाइल को मान्यता देगा और फिर आपको इसे रूट सीए सूची में आयात करने की अनुमति देगा।

अधिकांश अन्य कमांड जैसे curlकमांड लाइन स्विच लेते हैं जिसका उपयोग आप अपने सीए पर इंगित करने के लिए कर सकते हैं,

 curl --cacert  /path/to/CA/cert.file https://...

या SSL सत्यापन को पूरी तरह से छोड़ दें

 curl --insecure https://...

बाकी को अलग-अलग जांच की आवश्यकता होगी अगर उस ca-certificatesतरह की चाल उस विशेष एप्लिकेशन के लिए इसे सॉर्ट नहीं करती है।


इसके अलावा, जैसा कि यहां उल्लेख किया गया है , जावा के लिए सीए प्रमाणपत्र जोड़ना इसी तरह एक अलग मामला है।
नातुल्ली काई

2
प्रमाण पत्र / usr / शेयर / सीए-सर्टिफिकेट कॉपी करने के बाद, मैं इसे dpkg-reconfigure ca-certificatesसूची में नहीं देख सकता । मैं क्या गलत कर रहा हूं?
जार्ज डुपेरॉन

18
@ GeorgesDupéron जो मेरे साथ हुआ। मैंने इसे से प्रमाणपत्र का नाम बदलकर हल कर whatever.pemदिया whatever.crt
हैलो वर्ल्ड


2
FYI करें, मेरे पास एक प्रमाणित फ़ाइल थी .cer, और यह काम नहीं किया। मुझे .crtइसे पहचानने के लिए इसका नाम बदलना पड़ा ।
त्रिशंकु गुयेन

53

गैर इंटरएक्टिव दृष्टिकोण

एक गैर-संवादात्मक संदर्भ (उदाहरण के लिए एक शेफ नुस्खा) में उपयोग के लिए आप निम्नलिखित अनुक्रम का उपयोग कर सकते हैं।

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • परीक्षण किया और डेबियन 5/6 और Ubuntu 14.04 पर काम करता है।
  • अधिक जानकारी के लिए देखें man update-ca-certificates

यह विधि @ द्रविड़ विधि पर पसंद की जाती है, क्योंकि /usr/share/आमतौर पर ओएस / द्वारा जोड़ी गई फ़ाइलों के लिए आरक्षित होती है apt-get


4
यह करने के लिए फ़ाइलों की प्रतिलिपि बनाने के लिए बेहतर है /usr/local/share/ca-certificates/के रूप में आदमी पृष्ठों में वर्णित
ortang

3
एफवाईआई ए होना चाहिए .crt, मैंने पाया .certकि दावा किया गया था लेकिन इसमें मदद नहीं की गई
केसीडी

6

फेडोरा 23 पर, .pem या .der फ़ाइल को जोड़ें /etc/pki/ca-trust/source/anchors/और चलाएँ sudo update-ca-trust extract

man update-ca-trustविवरण के लिए देखें, उदाहरण के लिए कि क्या उपयोग करना है / etc या usr।


4

सेंटोस में:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

मुझे यह कब करना openssl connectचाहिए / एंकर फ़ोल्डर को निर्दिष्ट करना चाहिए? मुझे अभी भी एक त्रुटि मिल रही है "self signed certs
जनक मीणा

2


हाल के डेबियन आधारित प्रणालियों के लिए गैर इंटरएक्टिव दृष्टिकोण (अक्टूबर 18)

मेजबान के स्टोर में एक प्रमाण जोड़ने और इसे सक्रिय करने के बीच एक अंतर है ताकि आवेदन वास्तव में उन का उपयोग करें। स्टोर में एक मौजूदा प्रमाण पत्र आवश्यक रूप से उपयोग नहीं किया जाता है (हालांकि मुझे यह स्वीकार करना होगा कि अभी भी बहुत सारे पैकेज वैसे भी गलत हो रहे हैं)
यह भ्रमित हो सकता है जब आप एक पैकेज सेटअप करते हैं जो मानता है /etc/ca-certificate.confऔर बस अपने प्रमाण का उपयोग करने से इनकार करता है, हालांकि इसमें है त्रुटि के बिना जोड़ा गया है। आप बताने की आवश्यकता update-ca-certificatesके लिए (बस कॉपी नहीं लेकिन) में जोड़कर प्रमाणपत्र को सक्रिय स्पष्ट रूप से /etc/ca-certificate.confया /etc/ca-certificate/update.d

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

अब यहाँ यह भ्रामक हो जाता है क्योंकि किसी पथ का उपयोग करके किसी प्रमाण पत्र पर विश्वास करना एक तरीका है:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.