कमांड लाइन के लिए प्रमाण पत्र कैसे स्थापित करें


71

इसलिए स्कूल में हमें https साइटों को एक्सेस करने के लिए एक प्रमाणपत्र स्थापित करना होगा। फ़ायरफ़ॉक्स में, मैं प्रमाण पत्र आयात कर सकता हूं। हालाँकि, मैं कमांड लाइन के साथ ऐसा नहीं कर सकता। उदाहरण के लिए, git pushमुझे मिल रहा है:

fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

इसे हटाने के लिए मैं एक प्रमाण पत्र कैसे आयात करूं? आयात मेरे लिए प्रमाणित करने में सक्षम होना चाहिए। इसके अलावा, यह एक .cerफ़ाइल है, इसलिए इसका उत्तर .crtकाम नहीं करेगा। इसके अलावा, मैं कैसे git सेटअप करने के बारे में कदम नहीं चाहता, जैसा कि मेरे पास पहले से है। मैं जानना चाहता हूं कि क्या ऐसा करना संभव है। या क्या मैं अभी gitपूरी तरह से कमांड के साथ प्रमाणीकरण को अक्षम कर सकता हूं और इसे प्रमाण पत्र को अनदेखा कर सकता हूं जैसे कि यहां उत्तर क्या कहता है? इसके अलावा, मैं नहीं चाहता कि वेबपेज लोड हो, मैंने ऐसा करने के लिए फ़ायरफ़ॉक्स सेट किया है। मैं git pushमानक आउटपुट देने की आज्ञा चाहता हूं जैसे:

[master 630d087] message
 1 file changed, 93 insertions(+), 80 deletions(-)
 rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
   851ae39..630d087  master -> master

नोट: मुझे इसका पता चला git config --global http.sslverify false। लेकिन मैं हर चीज के लिए एक जवाब देखना चाहूंगा, न कि सिर्फ एक जीआईटी हैक



@ EricCarvalho नहीं, के लिए .crt। मुझे जरूरत है.cer
यूनिवर्सल इलेक्ट्रिक

क्या आपको अपने git कमांड में समस्या है या आप क्या करना चाहते हैं? मुझे @AB
AB

@AB मैं गिट को सर्टिफिकेट का उपयोग करने की कोशिश करने के बजाय स्कूल द्वारा हमें दिए गए प्रमाण पत्र का उपयोग करने की अनुमति देना चाहता हूं। या अगर वह काम नहीं करता है, तो स्कूल के सर्टिफिकेट को मेरे लिए प्रमाणित करने की अनुमति दें
यूनिवर्सल बिजली

ध्यान दें कि .crt और .cer एक्सटेंशन विनिमेय हैं, बस फ़ाइल नाम एक्सटेंशन को बदलें, उनका एक ही रूप है।
माइक

जवाबों:


116

टी एल; डॉ

सब कुछ काम करने के लिए और न केवल आपके ब्राउज़र के लिए, आपको उस CA प्रमाणपत्र को सिस्टम के विश्वसनीय CA रिपॉजिटरी में जोड़ना होगा।

Ubuntu में:

  • / Usr / स्थानीय / शेयर / सीए-प्रमाण पत्र / पर जाएं
  • एक नया फ़ोल्डर बनाएँ, जिसका अर्थ है "sudo mkdir school"
  • स्कूल फ़ोल्डर में .crt फ़ाइल की प्रतिलिपि बनाएँ
  • सुनिश्चित करें कि अनुमतियाँ ठीक हैं (फ़ोल्डर के लिए 755, फ़ाइल के लिए 644)
  • "Sudo अपडेट-कै-सर्टिफिकेट" चलाएं

क्यों

मुझे यह भी बताएं कि क्या चल रहा है, इसलिए अन्य पोस्टर देखते हैं कि उन्हें HTTPS पर Github का उपयोग करने के लिए किसी भी प्रमाण पत्र की आवश्यकता क्यों नहीं है।

वहाँ क्या चल रहा है कि आपका विद्यालय सभी एसएसएल संचारों को बाधित कर रहा है, शायद उनकी निगरानी के लिए।

ऐसा करने के लिए, वे जो करते हैं वह संक्षेप में एक "मैन इन द मिडल" हमला है, और उसके कारण, आपका ब्राउज़र सही तरीके से शिकायत करता है कि वह गितूब के प्रमाण पत्र को सत्यापित करने में सक्षम नहीं है। आपका स्कूल प्रॉक्सी जीथब के प्रमाणपत्र को निकाल रहा है और इसके बजाय अपना स्वयं का प्रमाण पत्र प्रदान कर रहा है।

जब आपका ब्राउज़र स्कूल के प्रदान किए गए प्रमाण पत्र को CA के खिलाफ सत्यापित करने का प्रयास करता है, जो गितुब के प्रमाण पत्र पर हस्ताक्षर करता है, तो यह सही रूप से विफल हो जाता है।

इसलिए, स्कूल में काम करने के लिए SSL कनेक्शन के लिए, आपको सचेत रूप से उस "MITM" हमले को स्वीकार करने की आवश्यकता है। और आप एक विश्वसनीय के रूप में स्कूल के सीए प्रमाण पत्र को जोड़कर करते हैं।

जब आप उस स्कूल के सीए पर भरोसा करते हैं, तो फर्जी गीथब सर्टिफिकेट का आपका सत्यापन काम करेगा, क्योंकि फर्जी जीथब सर्टिफिकेट स्कूल सीए द्वारा सत्यापित किया जाएगा।

विदित हो कि एसएसएल कनेक्शन अब सुरक्षित नहीं है क्योंकि आपका स्कूल प्रशासक आपके सभी एन्क्रिप्टेड कनेक्शनों को बाधित कर सकेगा।


यह अनिवार्य रूप से माइक के बिना dpkg-reconfigure कि जरूरत नहीं होनी चाहिए के रूप में एक ही जवाब है। क्या हो सकता है कि git या दूसरी कमांड लाइन उनके SSL सत्यापन के बारे में 100% मानक नहीं है। आपके द्वारा पहले लागू किए गए "एसएसएल हैक" को हल करने के लिए जिसे आप "गिट हैक" कहते हैं, का उपयोग करने की आवश्यकता हो सकती है।
टेलीग्राफर

और यह भी, ध्यान रखें कि आपको इस कमांड को चलाने के लिए रूट अनुमति की आवश्यकता है, इसलिए sudo कमांड को सफल होने की आवश्यकता है, या आप सिस्टम के सर्टिफिकेट अथॉरिटीज को अपडेट नहीं कर पाएंगे।
टेलीग्राफर

2
कृपया अतिरिक्त तथ्यों को प्रदान करने के लिए अपना उत्तर संपादित करें - टिप्पणी में मत छोड़ो।
गुंटबर्ट

1
मेरा मानना ​​है कि ऐसा होना चाहिए /usr/local/share/ca-certificates/। देखें man update-ca-certificates, जो वहाँ के लिए एक श्वेतसूची होने के बारे में बात करता है, /usr/share/ca-certificates/लेकिन इसके बारे में कि यह कैसे /usr/local/share/ca-certificates/निर्देशिका में सब कुछ पर भरोसा करता है ।
इयान हिकसन

3
Ubuntu 16.04 पर CA को जोड़ने के बाद /usr/local/share/ca-certificatesमुझे CA sudo dpkg-reconfigure ca-certificatesको पिक करने के लिए इसका उपयोग करना पड़ा ।
मैट एल।

40

ca-certificatesपैकेज अपने निर्देश है README.Debian:

आप स्थापित करने के लिए स्थानीय प्रमाणपत्र अधिकारियों परोक्ष भरोसा किया जा चाहते हैं, के साथ समाप्त एकल फाइल के रूप में प्रमाण पत्र फ़ाइलों डाल कृपया .crtमें /usr/local/share/ca-certificates/और फिर से चलाने के update-ca-certificates

ध्यान दें कि इसमें अन्य उत्तरों से अलग एक निर्देशिका का उल्लेख है:

/usr/local/share/ca-certificates/

/usr/local/share/ca-certificates/आप में कॉपी करने के बाद फिर सर्टिफिकेट की अनुमति को अपडेट कर सकते हैं और sudo update-ca-certificatesटेलीग्राफर्स के उत्तर में बताए अनुसार चला सकते हैं । आप आउटपुट में देखेंगे कि प्रमाणपत्र जोड़ा गया था।


4
इसने मेरे लिए उबंटू 16.04 पर भी काम किया। स्वीकृत उत्तर में पथ मेरे लिए काम नहीं किया।
प्लाजगोथ

यह एक स्वीकृत उत्तर होना चाहिए, यह ubuntu सर्वर 16.04 LTS के लिए एक कार्यशील समाधान है।
लसिथ बनारगामा

15

एक्सटेंशन .crt, .pem और .cer विनिमेय हैं, बस फ़ाइल नाम एक्सटेंशन बदलें, उनके पास एक ही रूप है। इसे इस्तेमाल करे:

$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem

खैर हालांकि यह सच है, इससे कोई फायदा नहीं हुआ। लेकिन भविष्य में यह लोगों की मदद कर सकता है
सार्वभौमिक विद्युत

मैंने एक और पंक्ति जोड़ी, कोशिश करें कि आपके प्रमाणपत्र पर विश्वास करने के लिए, ध्यान दें कि मैंने सेर बदल दिया है। .pem को 4 चरणों में से दो के बजाय .crt। @ यूनिकॉर्न बहुत बहुत स्वादिष्ट हैं
माइक

3
यदि आपकी .CER फाइल बाइनरी (DER स्वरूप) है, तो आप बस एक्सटेंशन नहीं बदल सकते। openssl(1)प्रमाणपत्र को PEM प्रारूप में बदलने के लिए उपयोग करें । रन:$ openssl -in mycert.cer -inform DER -out mycert.pem -outform PEM
आर्क यूजर

1
: @Archuser हो सकता है कि सही आदेश यह हैopenssl x509 -inform DER -in certificate.cer -out certificate.pem
artificerpi

5

मैं पिछले उत्तरों के निम्नलिखित संकलन का उपयोग करता हूं:

sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt 
update-ca-certificates

इसे वन-लाइनर होने के लिए संशोधित किया जा सकता है।

अक्सर दोनों site.example.comऔर example.comएक ही होस्टनाम होते हैं।


3

मैंने सभी समाधानों को पढ़ा और इस तरह हल किया;

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

sudo mv certificate.crt /usr/share/ca-certificate/

cd /usr/share/ca-certificate

sudo chmod 644 certificate.crt

sudo dpkg-reconfigure ca-certificates

sudo update-ca-certificates

1

मुझे एक ऐसी ही समस्या हो रही थी जहाँ फ़ायरफ़ॉक्स और गूगल क्रोम में प्रमाण पत्र स्थापित करना sudo apt-get updateकाम कर रहा था, लेकिन टर्मिनल में अपडेट करना काम नहीं कर रहा था और 403 निषिद्ध आईपी त्रुटियां दे रहा था। मैं भी एक नमूना था। फ़ाइल। इसलिए मूल रूप से मुझे इसे .crt में बदलना होगा।

sudo openssl x509 -inform DER -in sample.cer -out sample.crt

फिर भी करते समय sudo dpkg-reconfigure ca-certificatesमुझे आवश्यक प्रमाण पत्र नहीं मिला। मेरे साथ समस्या यह है कि मैं गलत जगह पर प्रमाण पत्र की नकल कर रहा था।

$/usr/share/ca-certificates मैं इसे कॉपी करने के बजाय इसे कॉपी कर रहा था $/usr/local/share/ca-certificates लेकिन इसे सही जगह पर रखकर मेरी समस्या हल कर दी। लेकिन मैं अभी भी पैकेजों को अद्यतन करने या नए पैकेजों को स्थापित करने में सक्षम नहीं हूं।

त्वरित सुधार (मेरे लिए):

Http के बजाय ftp का उपयोग

sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update

और इसके बाद के संस्करण ने काम किया। बदलाव करने से पहले कृपया सूत्रों की एक सूची बनाएँ। फ़ाइल।

अगर कुछ भी स्पष्ट नहीं है या उचित नहीं है तो कृपया मुझे सही करें।


0

किसी वेबसाइट का उपयोग करने के लिए https, चाहे आप CLI या GUI ब्राउज़र का उपयोग कर रहे हों, आपको अपने शूल प्रमाणपत्र की आवश्यकता नहीं है।

gitHttp (s) के माध्यम से उपयोग करने के लिए आपको अपनी सार्वजनिक सेटिंग को GitHub पर अपनी प्रोफाइल सेटिंग्स में पंजीकृत करना होगा ।

यहाँ और अधिक infos । अपनी GitHub प्रोफ़ाइल यहां बदलें ।


इसे इस्तेमाल करे:

sudo apt-get install w3m
w3m https://github.com/

… एक अतिरिक्त प्रमाण पत्र के बिना काम करता है।

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