HTTPS- आधारित आंतरिक APT रिपॉजिटरी के लिए एक स्व-हस्ताक्षरित SSL प्रमाणपत्र का उपयोग करना


10

मैंने कुछ निजी पैकेज के साथ आंतरिक उपयोग के लिए एक डेबियन रिपॉजिटरी (उबंटू वास्तव में) स्थापित किया है, और अब इसे कुछ विशिष्ट सर्वरों के लिए वेब पर उपलब्ध कराना चाहता हूं। मैं HTTPS का उपयोग करके इसे कनेक्ट करने के लिए apt-get / aptitude चाहूंगा, और क्योंकि मैं स्वयं हस्ताक्षरित प्रमाण पत्र का उपयोग करके कोई भी पैसा खर्च नहीं करना चाहता हूं।

मैंने apt.conf मैन पेज का अनुसरण करने की कोशिश की है, जिस पर इंगित करने के लिए होस्ट को मान्य करने के लिए अपने स्वयं के मूल CA प्रमाणपत्र का उपयोग करने के लिए मिलता है, लेकिन यह काम नहीं करता है।

मेरी apt.conf फ़ाइल कुछ इस प्रकार है:

#Acquire::https::repo.mydomain.com::Verify-Peer "false";
Acquire::https::repo.mydomain.com::CaInfo      "/etc/apt/certs/my-cacert.pem";
Acquire::https::repo.mydomain.com::SslCert     "/etc/apt/certs/my-cert.pem";
Acquire::https::repo.mydomain.com::SslKey      "/etc/apt/certs/my-key.pem";

मैं एक क्लाइंट प्रमाणपत्र का भी उपयोग करता हूं, लेकिन यह एक समस्या नहीं लगती है क्योंकि जब मैंने Verify-Peer को "झूठी" (ऊपर टिप्पणी की गई है) सब कुछ काम करता है।

उसी CA प्रमाणपत्र का उपयोग करना, ग्राहक प्रमाणपत्र और कुंजी कर्ल के साथ अच्छी तरह से काम करता है।

मैंने उपयुक्त डिबगिंग सक्षम किया (डीबग :: एक्वायर: https "ट्रू") लेकिन यह बहुत कम जानकारी प्रदान करता है।

आगे बढ़ने के बारे में कोई सुझाव?

जवाबों:


5

मैं ग्राहक प्रमाणीकरण का उपयोग नहीं करता, केवल HTTPS, लेकिन मुझे केवल इसका उपयोग करके काम करने के लिए मिला:

Acquire::https {
        Verify-Peer "false";
        Verify-Host "false";
}

मैंने इसे एक फ़ाइल के तहत रखा /etc/apt/apt.conf.d


1
यह वही है जो मैं नहीं चाहता हूं - मैं अपने सीए सर्टिफिकेट का उपयोग करके सर्वर को सत्यापित करना चाहता हूं। सत्यापन कार्य अक्षम करना लेकिन मैं इसे दीर्घकालिक नहीं करना चाहता।
Shevron

5

हाल ही में, मुझे एक समान समस्या का सामना करना पड़ा है। मैंने SslForceVersionविकल्प जोड़कर इसे हल किया ।

मेरा विन्यास इस प्रकार है:

Acquire::https::test.com {
    Verify-Peer "true";
    Verify-Host "true";

    CaInfo "/tmp/ca.crt";

    SslCert "/tmp/client.crt";
    SslKey  "/tmp/client.key";
    SslForceVersion "SSLv3";
};

2
इससे सावधान रहें। विभिन्न सुरक्षा कारणों से वेब साइट SSLv3 को अक्षम करने लगी हैं; भविष्य में केवल TLSv1 और उच्चतर काम करेंगे, और बाद में केवल TLSv1.2 + +
माइकल हैम्पटन

3

में askubuntu , मैं इस समाधान के कुछ सरल संस्करण और एक कि एक भी मेजबान के लिए विकल्प सीमित पाया।

Acquire::https::mirror.ufs.ac.za::Verify-Peer "false";

इसने मेरे लिए काम किया।

प्रश्नकर्ता यहाँ, हालांकि, प्रमाणीकरण को संरक्षित करना चाहता था; मैंने उपरोक्त पंक्तियों के साथ कुछ चीजों की कोशिश की, लेकिन यह भी काम नहीं कर सका। दूसरी ओर, चूंकि मेरी रिपॉजिटरी पर हस्ताक्षर किए गए हैं और मैंने हस्ताक्षर कुंजी स्थापित की है, इसलिए सुरक्षा के लिए एसएसएल प्रमाणीकरण महत्वपूर्ण नहीं है।


फिर से, नहीं है कि मैं क्या चाहता हूँ - मैं ऐसा जरूरत सहकर्मी सत्यापन। उस ने कहा, व्यक्तिगत रूप से मेरे पास एक काम करने वाला सेटअप है (स्टनलाइन के साथ मेरा वर्कअराउंड देखें)। यह अभी भी दूसरों की मदद कर सकता है।
शेव्रोन

3

मैंने सीए-सर्टिफिकेट लगाकर इसे दूसरे तरीके से हल किया।

  1. अपनी *.crtफ़ाइल को `/ usr / स्थानीय / शेयर / सीए-सर्टिफिकेट / पर कॉपी करें
  2. Daud sudo update-ca-certificates

यह समाधान Ubuntu 14.04 के साथ कम से कम काम करता है।


1
यह भी SSL अवरोधन / डिक्रिप्शन कर रही प्रॉक्सी के आसपास काम करता है। बस / etc / ssl / certs में प्रमाणपत्र जोड़ना नहीं है। इसके लिए शुक्रिया!
जॉर्डन

1
यह काम नहीं करता है क्योंकि मेरे द्वारा स्थापित प्रमाण पत्र हमारे फ़ायरवॉल से स्व-हस्ताक्षरित प्रमाण पत्र है। मेरे पास कोई और प्रमाण पत्र नहीं है।
पॉल

1

उम्मीद है कि यह दूसरों की मदद करता है - मैं इसे सीधे हल करने में सक्षम नहीं हूं।

वर्कअराउंड के रूप में, मैं अब अपने HTTPS रिपॉजिटरी में सुरंग बनाने के लिए stunnel4 का उपयोग कर रहा हूं। स्व-हस्ताक्षरित अनाज और क्लाइंट प्रमाणपत्र मेरे पास stunnel4 के साथ बहुत अच्छी तरह से काम करता है।

मैंने आने वाले कनेक्शनों के लिए स्थानीयहोस्ट: 8888 पर सुनने के लिए स्टनलाइन स्थापित किया है, और उन्हें मेरे रेपो (repo.mydomain.com:443) पर निर्देशित कर रहा हूं। मैंने http: // localhost: 8888 / पर अपनी रिपॉजिटरी देखने के लिए उपयुक्त सेट अप किया है ।

अब तक यह अच्छी तरह से काम कर रहा है, हालांकि यह एक अनावश्यक हैक की तरह लगता है।


-1

GnuTLS या उपयुक्त छोटी गाड़ी लगती है। यदि मेरे उपयुक्त स्रोतों से होस्ट का नाम। सूची मेरे रिपॉजिटरी वेबसर्वर से अपाचे सर्वरनाम से मेल नहीं खाती है तो मुझे TLSv1 का उपयोग करके निम्न त्रुटि मिलती है:

डब्ल्यू: https लाने में विफल : //repo.example/debian/dists/unstable/non-free/binary-amd64/Packages : gnutls_handshake () विफल: एक TLS चेतावनी चेतावनी प्राप्त हुई है।

SSLv3 का उपयोग करना सब कुछ ठीक काम करता है।

नोट: इसका SSL प्रमाणपत्र से कोई लेना-देना नहीं है। अमान्य प्रमाणपत्र के परिणामस्वरूप निम्न त्रुटि होगी:

Err https: //repo1.example अस्थिर / गैर-मुक्त i386 संकुल SSL: प्रमाणपत्र विषय नाम (repo.example) लक्ष्य होस्ट नाम 'repo1.example' से मेल नहीं खाता है


वास्तव में, यह सही है - अपाचे एसएनआई का समर्थन करता है, और यह चेतावनी देता है कि क्लाइंट से प्राप्त होस्टनाम सर्वर के कॉन्फ़िगर होस्टनाम से मेल नहीं खाता है। यह अच्छा होगा अगर apt सतर्क विवरण प्रिंट करेगा, लेकिन यह सही काम कर रहा है। SSLv3 पर वापस आना इन दिनों बहुत नासमझी है, और केवल "काम" करता है क्योंकि आप उन सुविधाओं को अक्षम कर रहे हैं जिनका आप वास्तव में उपयोग कर रहे हैं।
djmitche
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.