CentOS ওপেনলডিএপি শংসাপত্রের বিশ্বাসের সমস্যা


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

আরএইচইএল আসলে সিএ ট্রাস্টের উদ্দেশ্যে 'শংসাপত্র ডিরেক্টরি' হিসাবে ব্যবহৃত হতে পারে এমন কোনও কিছুই সরবরাহ করে না। ওপেনএসএসএল-এর জন্য একটি শংসাপত্র ডিরেক্টরি - একটি 'ক্যাপথ' - স্বতন্ত্র শংসাপত্রের ফাইলগুলি (পিইএম ফর্ম্যাট বা ওপেনএসএসএল এর বর্ধিত 'বিশ্বাসযোগ্য শংসাপত্র' ফর্ম্যাটে) সহ একটি ডিরেক্টরি যা শংসাপত্রের বিষয়বস্তুর নামের একটি হ্যাশের উপর ভিত্তি করে একটি নির্দিষ্ট বিন্যাসে নাম রয়েছে। সাধারণত এটি .pemএকটি ডিরেক্টরিতে মানব-পঠনযোগ্য নাম এবং এক্সটেনশানগুলির সাথে ফাইলগুলি রেখে এবং c_rehashএটিতে চালানো দ্বারা অর্জন করা হয় (দেখুনman c_rehash)। Nu.৩. since থেকে GnuTLS এর জন্য (এর আগে GnuTLS এর কোনও ডিরেক্টরি সমর্থন ছিল না), এটি কেবলমাত্র PEM ফাইলগুলির সাথে একটি ডিরেক্টরি; GnuTLS ডিরেক্টরিতে প্রতিটি ফাইল চেষ্টা করে লোড করবে এবং PEM-ish- তে কোনও কিছুতে সফল হবে (এটি ওপেনএসএসএল এর 'বিশ্বস্ত শংসাপত্র' ফর্ম্যাটটি পরিচালনা করতে পারে না)। আমি সত্যই নিশ্চিত নই যে এনএসএস প্রকৃতপক্ষে স্বতন্ত্র শংসাপত্রের ফাইলগুলি পূর্ণ কোনও ডিরেক্টরি কোনও বিশ্বাসের রুট হিসাবে ব্যবহার করতে পারে তবে ওপেনলডিএপি-র ডকুমেন্টেশনটি এটি করতে পারে বলে মনে হয় (তবে ডিরেক্টরিতে যদি কোনও এনএসএস ডাটাবেস থাকে তবে এটি অগ্রাধিকার দেবে)। নির্বিশেষে, RHEL এর পৃথক সিএ শংসাপত্র ফাইলগুলি পূর্ণ ডিরেক্টরি হিসাবে কিছুই নেই।

ডেবিয়ান এবং ডেরিভেটিভগুলি /etc/ssl/certsএই ফর্ম্যাটটিতে সরবরাহ করে; /etc/ssl/certsডেবিয়ান উপর ক্যানোনিকাল ট্রাস্ট দোকান অবস্থান, এবং আইএমও কিছু এটি মূলত এটা ডেবিয়ান মত খুঁজে রাখা উচিত উপলব্ধ যে হিসাবে ডেবিয়ান এর ডিরেক্টরিটি যেহেতু মত 1999 RHEL টি বেশী বা কম একই ভাবে আউট শিলান্যাস করা হয়েছিল /etc/ssl/certsডিরেক্টরি, কিন্তু এটা হয় এই বিন্যাসে নয় - এটিতে কোনও স্বতন্ত্র শংসাপত্রের ফাইলগুলি মোটেই নেই। আপনি এটিকে ক্যাপথ হিসাবে ব্যবহার করতে পারবেন না। সত্যি বলতে, আরএইচইএল (এবং ফেডোরা এবং ডেরিভেটিভস) -এ ডিরেক্টরিটি মূলত একটি ফাঁদ। এটি ব্যবহার করবেন না। ( Https://bugzilla.redhat.com/show_bug.cgi?id=572725 এবং https://bugzilla.redhat.com/show_bug.cgi?id=1053882 দেখুনএটি কেন প্রথম স্থানে রয়েছে এবং আমি কীভাবে এটি সংশোধন করার চেষ্টা করছি) এর কিছু ব্যাকগ্রাউন্ডের জন্য। সুতরাং আমি মনে করি আপনি কী করছেন সে সম্পর্কে আপনি সঠিক, তবে এর কারণটি সম্পর্কে ভুল। ওপেনলডিপ কোনও ভুল করছে না, এবং এটি ব্যর্থ হচ্ছে না কারণ "সিএ-বান্ডেল.টাস্ট.সিআরটি ... একটি মজিলা এনএসএস সার্টিফিকেট / কী ডাটাবেস" (এগুলি বলা হয় cert8/9.dbএবং key3/4.db, এবং আরএইচইএল- এ সিস্টেম-ব্যাপী যেগুলি লাইভ থাকে /etc/pki/nssdb) , এটি কেবল ব্যর্থ হয়েছে কারণ /etc/ssl/certs'শংসাপত্র ডিরেক্টরি' হিসাবে মোটেই ব্যবহারযোগ্য নয়।

আরএইচএল অন্য কোথাও ক্যাপথ-স্টাইলের বিশ্বাসের স্টোর হিসাবে ব্যবহারযোগ্য কিছু সরবরাহ করে না। RHEL সিস্টেম ট্রাস্ট দোকান একটি একক অবশ্যই PEM বান্ডিল ফাইল (ক দ্বারা OpenSSL পরিপ্রেক্ষিতে 'CAFile') এ পাওয়া যাবে, যা হিসাবে প্রদান করা হয় /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

করণীয় হিসাবে সঠিক জিনিসটি যেমনটি আপনি বুঝতে পেরেছেন তা হ'ল সিস্টেম সরবরাহ করে বান্ডিল ফাইলটি ব্যবহার করা। আপনার উত্তরটি কার্যকর হবে, তবে উপরে উল্লিখিত কারণগুলির জন্য, আমি দৃ strongly়ভাবে সুপারিশ করব TLS_CACERT=/etc/pki/tls/certs/ca-bundle.crtবা TLS_CACERT=/etc/pki/tls/cert.pemতার বেশি করব TLS_CACERT=/etc/ssl/certs/ca-bundle.crt

(বিটিডব্লিউ, এর কোনওটিতেই দূর থেকে নতুন কিছু নেই, তবে আন্তঃবিবাহ সম্পর্কে বিভ্রান্তি বিস্তৃত R আরএইচ এবং ডেরিভেটিভগুলি কখনও কখনও কোনও ডিরেক্টরি-সম্পূর্ণ-শংসাপত্র সরবরাহ করেনি। তারা 2000 সাল থেকে একটি বান্ডিল ফাইল সরবরাহ করে নি It এটি ছিল , / usr / ভাগ থেকে সরানো / SSL / etc / pki / TLS 2005 সালে ডেবিয়ান উভয় করেছে /etc/ssl/certsএকটি CApath ধাঁচের ডিরেক্টরি এবং /etc/ssl/certs/ca-certificates.crtএকটি বান্ডিল ফাইল বেশী বা কম পাথর বয়স থেকে যেমন।)


এই উত্তরটি বিশদের কারণে অনেকগুলি +1 প্রাপ্য।
ক্রিস্টোফার শুল্টজ

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 দিয়ে এই পরামিতিটি উপেক্ষা করা হয়।

মজিলা এনএসএস ব্যবহার করার সময়, একটি মজিলা এনএসএস সার্ট / কী ডাটাবেস থাকতে পারে। যদি কোনও মজিলা এনএসএস শংসাপত্র / কী ডাটাবেস এবং সিএ সার্টিট ফাইল থাকে, ওপেনলডিএপি শংসাপত্র / কী ডাটাবেস ব্যবহার করবে এবং সিএ সার্ট ফাইলগুলি উপেক্ষা করবে `

তবে, 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 ওপেনড্যাপ এবং এসএসডি-তে কাজ করেছে:

দ্রষ্টব্য: ক। কিছু "স্মার্ট লোক" এসএসডি করার সিদ্ধান্ত নিয়েছে টিএলএস / এসএসএল প্রয়োজন; Centos5 থেকে আচরণ পরিবর্তন; এটি বাহ্যিক সিস্টেমের জন্য দুর্দান্ত; তবে যখন আপনার কাছে মেশিনের ক্লাস্টারে পৌঁছনীয় নয় এমন অভ্যন্তরীণ নেটওয়ার্কের সাথে অভ্যন্তরীণ অ্যাপ্লায়েন্সে 300 + নোড থাকে; এটি অত্যন্ত অকেজো সুরক্ষা বৈশিষ্ট্য।

খ। ততক্ষণে স্ব-সজ্জিত শংসাপত্রগুলি আর কাজ করবে বলে মনে হয় না; চেষ্টা চালিয়ে যাবে

গ। যে কোনও মূল্যে এনএসএলসিডি এড়িয়ে চলুন; যখন আমি উত্তরাধিকারের পতাকাটি সেট করি এবং এসএসডি এর পরিবর্তে ব্যবহার করি (নেটগ্রুপস; ডেডলকিং সিসলগ, ইত্যাদি)।

এসএসডি ব্যবহার করে উঠতে এবং চালাতে;

  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
    

আমি এটি অযথা বৈশিষ্ট্য বলব না। আপনি একের জন্য অভ্যন্তরীণ ছড়িয়ে পড়া এড়াতে পারেন। আপনি যে অ্যাপ্লিকেশনগুলিতে এটি চান না সেখানে ট্র্যাফিকের জন্য ট্যাপ করতে সক্ষম হওয়ার জন্য আপনি অ্যাপ্লিকেশনগুলি এড়িয়ে যান। এটি অনর্থক না হওয়ার কয়েকটি কারণ রয়েছে।
টর্ক্সড

40gig-100gig চলমান কোনও অভ্যন্তরীণ নেটওয়ার্কে? সিরিয়াসলি? এইচপিসির ব্যাকএন্ডটি ট্যাপ করতে আপনি কী ব্যবহার করছেন? শুধু এফওয়াইআই; এটি এক সেকেন্ডে 1 গিগাবাইট ডেটা। এটি বাধ্যতামূলক সুরক্ষা মডেলের সমস্যা ... এটি সমস্ত শেষ ব্যবহারকারীদের জন্য সাধারণ অনুমান তৈরি করে। আপনি যেমন করেছেন ঠিক তেমন ... এমন একটি মডেল যেখানে আমি মালিকানা 100% অভ্যন্তরীণ নেটওয়ার্ক চালাচ্ছি; 16 মেগাবাইট এমটিইউ এবং মনস্ট্রাস পাইপ সহ; 100% অকেজো। আমরা সুরক্ষার জন্য অন্যান্য মডেল ব্যবহার করি এবং গতিতে ডেটা এনক্রিপ্ট করতে LDAP / TLS এর উপর নির্ভর করি না।
জেরোবনে

আমি ইন্টারনেটে একজন গরম মাথার লেখকের সাথে ঝোঁক প্রতিযোগিতায় নামছি না। তবে আপনি যদি প্রতি সেকেন্ডে কেবল একটি গিগ চাপিয়ে দিচ্ছেন এবং 100-500 হোস্ট চালাচ্ছেন আমি সত্যিই এখানে সমস্যাটি দেখছি না। অবশ্যই টিএলএসকে আরও সিপিইউ লোড লাগবে না তবে এটির অনুকূলকরণ এবং নেটওয়ার্কটি পুনর্গঠন করার বিভিন্ন উপায় রয়েছে (টিএলএস থেকে প্রান্তিক ওভারহেড এটি এত বেশি প্রভাবিত করে যদি এর মতো শব্দগুলি প্রয়োজন হতে পারে)। এটি আপনার উপর চাপিয়ে দেওয়া হয় না, sssdউদাহরণস্বরূপ তুলনায় কম সুরক্ষিত লাইব্রেরি সহ যান ।
টর্েক্সড

অবমাননাকর মন্তব্য এবং আক্রমণ করার কোনও কারণ নেই; আসল তথ্য দিয়ে চলুন অনুমান করতে গিয়ে আপনি বাধ্যতামূলক সুরক্ষা মডেলটি জমা দিয়েছেন বা মডেলটিকে সমর্থন করেছেন। শুধু একটি এফওয়াইআই; এইচপিসি বিশ্বে 1-2% কে অসাধারণ বলে মনে করা হয়। এটি 100-500 হোস্ট নয়; যদি আপনি হোস্টগুলি বিবেচনা করেন = cpu; আপনি 10,000+ হোস্টের সাথে কথা বলছেন। আমরা সম্ভবত ব্রাঞ্চিং কোডটি শেষ করব বা এর পরিবর্তে এনএসএলসিডিতে ফিরে যাব। "কম" সুরক্ষিত মডেলটি ব্যবহার করার বিষয়টি নেট-গ্রুপ সমর্থন। নেটওয়ার্কটি অপ্টিমাইজ এবং পুনর্গঠন; হাঃ হাঃ হাঃ; শুধুমাত্র শীর্ষস্থানীয় সুপার কম্পিউটার সংস্থা; নিশ্চিতভাবে আমাদের এটি কীভাবে করতে হয় তা আমাদের জানান এবং পেটেন্টটি আমাদের দেখান।
জেরোবনে

0

এটি একটি খুব সাধারণ সমস্যা, হতাশ হবেন না আমার কাছে আপনার উত্তর আছে।

প্রথম RHEL ক্লোনের যোগান দেয় দুই আছে ldap.confফাইল, /etc/ldap.confবা হয় RHEL6 অবচিত কিন্তু আপনি ব্যবহার করতে পারেন /etc/nslcd.confজন্য প্রমাণীকরণ এখন /etc/openldap/ldap.confশুধুমাত্র জন্য প্রশ্নের , তাই ldapsearch, ldapmodify, ldapremove, আসলেই আপনার প্রোফাইলের করে যাতে আপনি আপনার কদর্য দীর্ঘ স্ট্রিং প্রতিটি সময় আপনি চান করতে হবে না একটি ldap কমান্ড চালাতে।

উপায় ছাড়াই এখন, আপনার দুটি পরামিতি রয়েছে,

  • tls_cacertfile - স্পষ্টভাবে সিএ সার্ট সংজ্ঞায়িত করুন এবং আপনার ভাল হওয়া উচিত
  • tls_cacertdir-, ডিরেক্টরির মধ্যে CA Cert ড্রপ কিন্তু এটি কাজ করবে না কেননা এটা প্রয়োজন কুচি-কুচি করিয়া কাটা বস্তু করা ...

ব্যবহার করুন openssl x509 -hash -noout -in $file , ln -s $file $file.0, তারপরে আপনার সিএ সার্ট কাজ করবে।

এছাড়াও খেয়াল করুন কনফিগারেশন ফাইলটি সিএপিএসে রয়েছে, আপনি /etc/openldap/ldap.conf এ কাজ করছেন, সেগুলি খুব আলাদা ফাইল।

আশা করি এটি পরিষ্কার হয়ে যাবে।


-1

প্রত্যেকটি পুরুষ পৃষ্ঠা অনুসারে আমি দেখেছি (তবে আমি কোনও সেন্টোস ব্যবহারকারী নই) এর মতো কোনও জিনিস নেই LDAPTLS_CACERTDIR। সেট করার জন্য সঠিক ভেরিয়েবল TLS_CACERTDIR। আপনার এটি স্থায়ীভাবে /etc/openldap/ldap.confবা যে কোনও জায়গায় সেন্টোস এলডিএপি লাইব্রেরি কনফিগারেশন ফাইল রাখে set এছাড়াও, আপনাকে সিএ শংসাপত্রগুলি সন্ধানের জন্য পাম-এলডিএপ নিজেই কনফিগার করতে হবে। 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এবং কোনও পাইনি, তাই আমি ধরে নিয়েছি যে আপনি আপনার ভেরিয়েবলগুলি মিশ্রিত করেছেন। দুঃখিত।
ড্যাফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.