एलडीएपी होस्ट को प्रमाणित करने में असफल इलास्टिकसर्च


1

मेरे पास नीचे ElasticSearch कॉन्फ़िगरेशन है, जहाँ ES को CA और जारीकर्ता CA दोनों पर भरोसा करने के लिए कॉन्फ़िगर किया गया है। (LDAP1 क्षेत्र में प्रासंगिक जानकारी शामिल है।)

xpack:
  security:
    enabled: true
    transport:
      ssl:
        enabled: true
        verification_mode: certificate
        keystore:
          path: /etc/elasticsearch/security/elastic-certificates.p12
        truststore:
          path: /etc/elasticsearch/security/elastic-certificates.p12
    http:
      ssl:
        enabled: true
        verification_mode: certificate
        certificate_authorities: ["/etc/elasticsearch/security/rootCA.pem", "/etc/elasticsearch/security/issuingCA.pem"]
        certificate: "/etc/elasticsearch/security/elstcweb1.company.com.cer"
        key: "/etc/elasticsearch/security/elstcweb1.company.com.key"
    authc:
      realms:
        native:
          type: native
          order: 0
        ldap1:
          type: ldap
          order: 1
          url: "ldaps://ldapserver.company.com:636"
          bind_dn: "user"
          user_search:
            base_dn: "redacted"
          group_search:
            base_dn: "redacted"
          ssl:
            certificate_authorities: ["/etc/elasticsearch/security/rootCA.cer", "/etc/elasticsearch/security/issuingCA.cer"]

हालाँकि, जब सेवा में प्रवेश करने का प्रयास कर रहा हूं, तो मुझे नीचे दिए गए LDAP अपवाद मिल रहे हैं।

[es-prod-1] Authentication to realm ldap1 failed - authenticate failed (Caused by LDAPException(resultCode=91 (connect error), errorMessage='An error occurred while attempting to connect to server ldapserver.company.com:636:  java.io.IOException: LDAPException(resultCode=91 (connect error), errorMessage='Unable to verify an attempt to to establish a secure connection to 'ldapserver.company.com:636' because an unexpected error was encountered during validation processing:  SSLPeerUnverifiedException(message='peer not authenticated', trace='getPeerCertificates(SSLSessionImpl.java:440)

मुझे शुरू में सूचित किया गया था कि रूट और जारी करने वाले CA प्रमाण पत्र वे थे जो LDAP सर्वर प्रमाणपत्र पर हस्ताक्षर करने के लिए उपयोग किए जाते थे। हालाँकि, समस्या निवारण का उपयोग करते समय openssl verify, मुझे निम्न अपवाद प्राप्त हुए, जिसके कारण मुझे विश्वास हो गया कि ऐसा नहीं हो सकता है:

openssl verify -verbose -CAfile /etc/elasticsearch/security/[rootCA.cer,issuingCA.cer,combinedRootIssuingCA.cer] ldap.pem
ldap.pem: C = US, L = REDACTED, O = REDACTED, OU = DSS, CN = ldapserver.company.com, emailAddress = REDACTED
error 20 at 0 depth lookup:unable to get local issuer certificate

मैंने LDAP सर्वर का प्रमाणपत्र ( ldap.pemउपरोक्त उदाहरण में) के माध्यम से प्राप्त किया openssl s_client:

openssl s_client -connect ldapserver.company.com:636 2>/dev/null </dev/null |  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ldap.pem

उपरोक्त को देखते हुए, क्या मेरा आकलन है कि LDAP सर्वर के प्रमाण पत्र पर मूल / हस्ताक्षरित CA द्वारा हस्ताक्षरित नहीं था? या s_clientविधि LDAP सर्वर का CA प्राप्त करने का उपयुक्त तरीका नहीं था ?

संपादित करें: मैन्युअल रूप से सम्मिलित पंक्ति विराम के साथ पूर्ण त्रुटि संदेश:

[2019-01-21T15:03:22,268][WARN ][o.e.x.s.a.AuthenticationService] [es-prod-1] Authentication to realm ldap1 failed - authenticate failed (Caused by LDAPException(resultCode=91 (connect error), errorMessage='An error occurred while attempting to connect to server ldapserver.company.com:636:  java.io.IOException: LDAPException(resultCode=91 (connect error), errorMessage='Unable to verify an attempt to to establish a secure connection to 'ldapserver.company.com:636' because an unexpected error was encountered during validation processing:  SSLPeerUnverifiedException(message='peer not authenticated', trace='getPeerCertificates(SSLSessionImpl.java:440) 
 verifySSLSocket(HostNameSSLSocketVerifier.java:113) 
 <init>(LDAPConnectionInternals.java:166)  connect(LDAPConnection.java:860) 
 connect(LDAPConnection.java:760) 
 connect(LDAPConnection.java:710) 
 <init>(LDAPConnection.java:534) 
 getConnection(SingleServerSet.java:229) 
 getConnection(ServerSet.java:98) 
 getConnection(FailoverServerSet.java:545) 
 createConnection(LDAPConnectionPool.java:1205) 
 createConnection(LDAPConnectionPool.java:1178) 
 getConnection(LDAPConnectionPool.java:1706) 
 doPrivileged(AccessController.java:native) 
 privilegedConnect(LdapUtils.java:75) 
 searchForEntry(LdapUtils.java:258) 
 searchForEntry(LdapUtils.java:210) 
 findUser(LdapUserSearchSessionFactory.java:225) 
 getSessionWithPool(LdapUserSearchSessionFactory.java:78) 
 session(PoolingSessionFactory.java:101) 
 lambda$doAuthenticate$1(LdapRealm.java:125) 
 doRun(LdapRealm.java:283) 
 doRun(ThreadContext.java:723) 
 run(AbstractRunnable.java:37) 
 runWorker(ThreadPoolExecutor.java:1149) 
 run(ThreadPoolExecutor.java:624) 
 run(Thread.java:748)', revision=24201)')'))

क्या आपको वास्तव में एक त्रुटि संदेश मिला था जो एक पंक्ति में लगभग 600 वर्ण लंबा था? यदि नहीं, तो कृपया  अपने प्रश्न को संपादित करें और लाइन ब्रेक डालें जहां वे वास्तव में हुए थे।
स्कॉट

लॉग में बताए अनुसार त्रुटि संदेश एक पंक्ति में 1719 वर्ण था। हालाँकि, ऐसा लगता है कि /वर्ण के साथ लॉग इंगित लाइन विराम । मैंने नीचे दिए गए लाइन-ब्रेक के साथ पूरा संदेश जोड़ा है।
mongolol

जवाबों:


0

तीसरी सीए बनने पर भरोसा करने की आवश्यकता थी। इस CA ने अपने LDAP सर्वर के VIP प्रमाणपत्र पर हस्ताक्षर किए।

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