CentOS OpenLDAP प्रमाणित ट्रस्ट समस्याएं


12
# LDAPTLS_CACERTDIR=/etc/ssl/certs/ ldapwhoami -x -ZZ -H ldaps://ldap.domain.tld
ldap_start_tls: Can't contact LDAP server (-1)
      additional info: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user.

# openssl s_client -connect ldap.domain.tld:636 -CApath /etc/ssl/certs
<... successful tls negotiation stuff ...>
    Compression: 1 (zlib compression)
    Start Time: 1349994779
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

opensslलगता है कि प्रमाणपत्र ठीक है, लेकिन openldapलाइब्रेरीज़ ( pam_ldapसमान व्यवहार प्रदर्शित करती हैं, जो मुझे इस झंझट में पड़ गया) असहमत हैं।
मैं क्या गलत कर रहा हूं?

जवाबों:


17

आरएचईएल वास्तव में कुछ भी प्रदान नहीं करता है जिसे सीए ट्रस्ट के उद्देश्यों के लिए 'प्रमाणपत्र निर्देशिका' के रूप में उपयोग किया जा सकता है। OpenSSL के लिए, एक प्रमाणपत्र निर्देशिका - एक 'CApath' - एक निर्देशिका है जिसमें व्यक्तिगत प्रमाणपत्र फ़ाइलें होती हैं (PEM प्रारूप या OpenSSL के विस्तारित 'विश्वसनीय प्रमाणपत्र' प्रारूप में), प्रमाणपत्र के विषय के नाम के आधार पर विशिष्ट प्रारूप में नाम के साथ। आमतौर पर यह .pemएक निर्देशिका में मानव-पठनीय नाम और एक्सटेंशन के साथ फाइलें डालकर और c_rehashउस पर चलकर (देखें)man c_rehash)। 3.3.6 के बाद से GnuTLS के लिए (इससे पहले कि GnuTLS के पास कोई निर्देशिका समर्थन नहीं था), यह सिर्फ PEM फ़ाइलों वाली एक निर्देशिका है; GnuTLS निर्देशिका में हर फ़ाइल को आज़माएगा और कुछ भी PEM-ish पर सफल होगा (यह OpenSSL के 'विश्वसनीय प्रमाणपत्र' प्रारूप को संभाल नहीं सकता है)। मुझे पूरी तरह से यकीन नहीं है कि एनएसएस वास्तव में एक ट्रस्ट रूट के रूप में व्यक्तिगत प्रमाण पत्र फ़ाइलों से भरी निर्देशिका का किसी भी तरह से उपयोग कर सकता है, लेकिन ओपनडाएपी के दस्तावेज यह सुझाव दे सकते हैं (लेकिन यदि निर्देशिका में एनएसएस डेटाबेस भी है तो यह प्राथमिकता देगा)। इसके बावजूद, RHEL के पास व्यक्तिगत CA प्रमाणपत्र फ़ाइलों से भरी निर्देशिका जैसी कोई चीज नहीं है।

डेबियन और डेरिवेटिव /etc/ssl/certsइस प्रारूप में प्रदान करते हैं ; /etc/ssl/certsडेबियन पर विहित ट्रस्ट स्टोर स्थान है, और IMO कुछ भी जो इसे प्रदान करता है, उसे मूल रूप से डेबियन की तरह रखना चाहिए, क्योंकि डेबियन की वह निर्देशिका थी जो 1999 की तरह कमोबेश उसी तरह रखी गई थी। आरएचईएल के पास एक /etc/ssl/certsनिर्देशिका है, लेकिन यह है इस प्रारूप में नहीं - इसमें कोई भी व्यक्तिगत प्रमाणपत्र फ़ाइल शामिल नहीं है। आप इसे एक CApath के रूप में उपयोग नहीं कर सकते। ईमानदारी से, आरएचईएल (और फेडोरा, और डेरिवेटिव) पर है कि निर्देशिका मूल रूप से एक जाल है। इसका उपयोग न करें। (देखें https://bugzilla.redhat.com/show_bug.cgi?id=572725 और https://bugzilla.redhat.com/show_bug.cgi?id=1053882यह पहली जगह में क्यों मौजूद है, और मैं इसे ठीक करने की कोशिश कर रहा हूँ) पर कुछ पृष्ठभूमि के लिए। इसलिए मुझे लगता है कि आप सही हैं कि क्या हो रहा है, लेकिन इस कारण के बारे में गलत है। OpenLDAP कुछ भी गलत नहीं कर रहा है, और यह विफल नहीं हो रहा है क्योंकि "ca-bundle.trust.crt ... एक मोज़िला एनएसएस सर्टिफिकेट / कुंजी डेटाबेस है" (जिन्हें कॉल किया जाता है cert8/9.dbऔर आरएचईएल key3/4.dbपर सिस्टम-वाइड वाले रहते हैं /etc/pki/nssdb) , यह सिर्फ इसलिए असफल हो रहा है क्योंकि /etc/ssl/certsएक 'प्रमाणपत्र निर्देशिका' के रूप में प्रयोग करने योग्य नहीं है।

RHEL CApath- शैली ट्रस्ट स्टोर के रूप में कहीं भी उपयोग करने योग्य कुछ भी प्रदान नहीं करता है, या तो। आरएचईएल का सिस्टम ट्रस्ट स्टोर एक एकल पीईएम बंडल फ़ाइल (ओपनएसएसएल शर्तों में एक 'सीएफ़ाइल') के रूप में प्रदान किया जाता है, जिसे /etc/pki/tls/certs/ca-bundle.crtऔर यहां पाया जा सकता है /etc/pki/tls/cert.pem। यह भी पाया जा सकता है के /etc/ssl/certs/ca-bundle.crtरूप /etc/ssl/certsमें वास्तव में सिर्फ एक सिमलिंक है /etc/pki/tls/certs, लेकिन यह स्थान विहित नहीं है और वास्तव में कभी भी इसका उपयोग नहीं किया जाना चाहिए। आरएचईएल ओपनएसएसएल के 'विश्वसनीय प्रमाणपत्र' प्रारूप में एक बंडल प्रदान करता है /etc/pki/tls/certs/ca-bundle.trust.crt

सही बात यह है, जैसा कि आपको पता चला है, सिस्टम द्वारा प्रदान की गई बंडल फ़ाइल का उपयोग करना है। आपका उत्तर काम करेगा, लेकिन ऊपर वर्णित कारणों के लिए, मैं दृढ़ता से सिफारिश करूंगा TLS_CACERT=/etc/pki/tls/certs/ca-bundle.crtया TLS_CACERT=/etc/pki/tls/cert.pemखत्म कर दूंगा TLS_CACERT=/etc/ssl/certs/ca-bundle.crt

(इसमें से किसी में भी नया कुछ भी नहीं है, btw, लेकिन इंटरव्यू पर भ्रम व्यापक है। आरएच और डेरिवेटिव ने कभी भी एक निर्देशिका-पूर्ण-प्रमाणपत्र प्रदान नहीं किया है। उन्होंने वर्ष 2000 से एक बंडल फ़ाइल प्रदान की है। 2005 में / usr / share / ssl से / etc / pki / tls में स्थानांतरित कर दिया गया। Debian में दोनों /etc/ssl/certsएक CApath- शैली निर्देशिका के /etc/ssl/certs/ca-certificates.crtरूप में और एक बंडल फ़ाइल के रूप में कम या ज्यादा पाषाण युग से हैं।)


यह उत्तर विस्तार के कारण कई + 1s का हकदार है।
क्रिस्टोफर शुल्त्स

10

/etc/ssl/certs/के /etc/ssl/certs/ca-bundle.trust.crtहिस्से के रूप में शामिल है ca-certificates-2010.63-3.el6_1.5.noarch, जो एक मोज़िला एनएसएस सर्टिफिकेट / कुंजी डेटाबेस है। भीतर इस फ़ाइल का समावेश TLS_CACERTDIRका कारण बनता है अन्य सभी फ़ाइलों को अनदेखा कर दिया है।

TLS_CACERTDIR
एक निर्देशिका का पथ निर्दिष्ट करता है जिसमें अलग-अलग व्यक्तिगत फ़ाइलों में प्रमाणपत्र प्राधिकरण प्रमाणपत्र शामिल हैं। TLS_CACERT का उपयोग हमेशा TLS_CACERTDIR.` से पहले किया जाता है। इस पैरामीटर को GnuTLS के साथ अनदेखा किया जाता है।

मोज़िला एनएसएस का उपयोग करते समय, एक मोज़िला एनएसएस प्रमाणित / कुंजी डेटाबेस हो सकता है। यदि एक मोज़िला NSS सर्टिफ़िकेट / कुंजी डेटाबेस और CA सर्टिफ़िकेट फ़ाइलें हैं, तो OpenLDAP सर्टिफ़िकेट / कुंजी डेटाबेस का उपयोग करेगा और CA सर्टिफ़िकेट फ़ाइलों की अनदेखी करेगा। '

हालाँकि, openldap-2.4.23-26.el6_3.2.i686यह ठीक से नहीं लगता है।

संक्षिप्त उत्तर का
उपयोग करें LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(कॉन्फ़िग फ़ाइल TLS_CACERT=/etc/ssl/certs/ca-bundle.crt)
यह फ़ाइल भी इसमें शामिल है ca-certificates-2010.63-3.el6_1.5.noarch


1

कोई और भी इसमें भागता है; इसने मेरे लिए सेंटोस 6 ओपनडैप और sssd पर काम किया:

नोट: ए। कुछ "स्मार्ट आदमी" ने sssd बनाने के लिए TLS / SSL की आवश्यकता का निर्णय लिया; सेंटोस 5 से व्यवहार परिवर्तन; यह बाहरी प्रणालियों के लिए बहुत अच्छा है; लेकिन जब आपके पास मशीन क्लस्टर में एक पहुंच योग्य आंतरिक नेटवर्क के साथ आंतरिक उपकरण पर 300 + नोड होते हैं; यह बेहद बेकार सुरक्षा सुविधा है।

ख। इसके अलावा स्वयं गाए गए प्रमाण पत्र अब काम नहीं करते हैं; कोशिश जारी रहेगी

सी। हर कीमत पर एनएसएलसीडी से बचें; जब मैं विरासत के ध्वज को सेट करता था और sssd (netgatalog; गतिरोध syslog, आदि) के बजाय इस्तेमाल किया जाता था, तो नॉन-स्टॉप मुद्दों से ग्रस्त था।

Sssd का उपयोग करके उठना और चलना;

  1. sssd.conf

    [domain/default]
    ldap_id_use_start_tls = True
    id_provider = ldap
    auth_provider = ldap
    chpass_provider = ldap
    cache_credentials = True
    ldap_search_base = dc=local
    enumerate = True
    ldap_uri = ldap://192.168.1.2/
    ldap_tls_cacertdir = /etc/openldap/cacerts
    ldap_tls_reqcert = allow
    ldap_schema = rfc2307bis
    
  2. slapd.conf

    TLSCACertificateFile   /etc/openldap/cacerts/ca-bundle.crt
    TLSCertificateFile      /etc/openldap/cacerts/slapd.pem
    TLSCertificateKeyFile   /etc/openldap/cacerts/slapd.pem
    TLSCipherSuite HIGH:MEDIUM:-SSLv2
    
  3. ldap.conf

    URI ldap://192.168.1.2/
    BASE dc=local
    
    TLS_CACERTDIR /etc/openldap/cacerts
    

मैं यह नहीं कहूंगा कि यह एक बेकार विशेषता है। आप आंतरिक बाजों को एक के लिए छोड़ने से बचते हैं। आप उन उपकरणों से बचते हैं जो ट्रैफ़िक में टैप करने में सक्षम हैं जहाँ आप इसे नहीं चाहते हैं। यह बेकार क्यों नहीं है, इसके कई कारण हैं।
Torxed

आंतरिक नेटवर्क पर 40gig-100gig चल रहा है? गंभीरता से? आप एचपीसी के बैकएंड को टैप करने के लिए क्या उपयोग करने जा रहे हैं? सिर्फ आपकी जानकारी के लिए; यह 1gigabyte डेटा एक सेकंड है। यह मजबूर सुरक्षा मॉडल के साथ समस्या है ... यह सभी अंत उपयोगकर्ताओं के लिए सामान्यीकृत धारणा बनाता है। जैसे आपने अभी किया ... एक मॉडल पर जहां मैं एक मालिकाना 100% आंतरिक नेटवर्क चला रहा हूं; 16megabyte MTU और राक्षसी पाइप के साथ; 100% बेकार। हम सुरक्षा के लिए अन्य मॉडलों का उपयोग करते हैं और गति में डेटा एन्क्रिप्ट करने के लिए LDAP / TLS पर निर्भर नहीं होते हैं।
ज़ेरोबाने १४'१६

मैं इंटरनेट पर एक गर्म नेतृत्व वाले लेखक के साथ एक पिसिंग प्रतियोगिता में नहीं उतर रहा हूं। लेकिन अगर आप प्रति सेकंड केवल एक टमटम पर जोर दे रहे हैं और 100-500 मेजबानों को चला रहे हैं, तो मैं वास्तव में इस मुद्दे को नहीं देखता। निश्चित रूप से टीएलएस को अधिक सीपीयू लोड की आवश्यकता होती है, लेकिन इसे अनुकूलित करने और नेटवर्क के पुनर्गठन के तरीके हैं (लगता है कि इस तरह की आवश्यकता हो सकती है यदि टीएलएस से सीमांत ओवरहेड इसे बहुत प्रभावित करता है)। यह भी आप पर मजबूर नहीं है, sssdउदाहरण के लिए एक कम सुरक्षित पुस्तकालय के साथ जाओ ।
16

अपमानजनक टिप्पणी और हमलों का कोई कारण नहीं; तथ्यों के साथ रहने दें। यह अनुमान लगाते हुए कि आपने मजबूर सुरक्षा मॉडल प्रस्तुत किया है या मॉडल का समर्थन किया है। सिर्फ एक FYI करें; एचपीसी दुनिया में 1-2% जबरदस्त माना जाता है। इसके 100-500 यजमान नहीं हैं; यदि आप मेजबान = सीपीयू पर विचार करते हैं; आप 10,000+ होस्ट की बात कर रहे हैं। हम शायद ब्रांचिंग कोड को समाप्त कर देंगे या इसके बजाय nslcd पर वापस जाएंगे। "कम" सुरक्षित मॉडल का उपयोग करने के साथ समस्या नेट-समूह समर्थन है। अनुकूलन और पुनर्गठन नेटवर्क; जबरदस्त हंसी; केवल अग्रणी सुपर कंप्यूटर कंपनी; कृपया हमें बताएं कि यह कैसे करना है और हमें पेटेंट दिखाना है।
ज़ेरोबाने १४'१६

0

यह एक बहुत ही आम समस्या है, झल्लाहट मत करो मैं तुम्हारे लिए एक जवाब है।

सबसे पहले RHEL क्लोन दो है ldap.confफ़ाइलें, /etc/ldap.confया में RHEL6 हटा दिया गया है, लेकिन आप उपयोग कर सकते हैं /etc/nslcd.confके लिए प्रमाणीकरण अब /etc/openldap/ldap.confकेवल के लिए है प्रश्नों , इसलिए ldapsearch, ldapmodify, ldapremove, यह वास्तव में अपने प्रोफ़ाइल है, तो आप एक बुरा लंबी स्ट्रिंग हर बार जब आप चाहते हैं की जरूरत नहीं है एक ldap कमांड चलाने के लिए।

अब उस रास्ते से बाहर, आपके पास दो पैरामीटर हैं,

  • tls_cacertfile - सीए प्रमाणपत्र को स्पष्ट रूप से परिभाषित करें और आपको जाने के लिए अच्छा होना चाहिए
  • tls_cacertdir- निर्देशिका में सीए प्रमाणित में गिरावट, लेकिन यह काम नहीं करेगा, क्योंकि यह हैशेड की जरूरत है ...

उपयोग करें openssl x509 -hash -noout -in $file , ln -s $file $file.0, फिर आपका CA प्रमाणपत्र काम करेगा।

यह भी ध्यान दें कि यदि कॉन्फ़िग फ़ाइल CAPS में है, तो आप /etc/openldap/ldap.conf में काम कर रहे हैं, वे बहुत भिन्न फाइलें हैं।

आशा है, इससे स्थिति स्पष्ट हो जाएगी।


-1

मेरे द्वारा देखे गए प्रत्येक आदमी पृष्ठ के अनुसार (लेकिन मैं एक CentOS उपयोगकर्ता नहीं हूँ) ऐसी कोई बात नहीं है LDAPTLS_CACERTDIR। सेट करने के लिए सही चर रहा है TLS_CACERTDIR। आपको इसे स्थायी रूप से /etc/openldap/ldap.confया जहाँ भी CentOS LDAP लाइब्रेरी कॉन्फ़िगरेशन फ़ाइल रखता है, वहां सेट करना चाहिए । इसके अलावा, आपको CA सीट्स की तलाश के लिए स्वयं पाम-लैडैप को कॉन्फ़िगर करने की आवश्यकता हो सकती है। CentOS में यह है /etc/pam_ldap.conf, मुझे लगता है, और सेट करने के लिए चर है tls_cacertdir


मैंने पहले फ़ाइल विधि का प्रयास किया, लेकिन संक्षिप्तता के लिए शेल चर का उपयोग करने के लिए चुना गया। अगर आप मैन पेज पढ़ते हैंEnvironmental variables may also be used to augment the file based defaults. The name of the variable is the option name with an added prefix of LDAP. For example, to define BASE via the environment, set the variable LDAPBASE to the desired value.
84104

आप बिल्कुल सही हैं, मेरा बुरा। मैन पेज के उस हिस्से को मैंने कभी नहीं पढ़ा क्योंकि मैं हमेशा कॉन्फ़िगरेशन फ़ाइल का उपयोग करता हूं। मैं घटनाओं के लिए मैन पेज को स्कैन कर रहा था LDAPTLS_CACERTDIRऔर कोई भी नहीं मिला, इसलिए मैंने माना कि आपने अपने चरों को मिलाया है। माफ़ करना।
daff
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.