2017-07-20 5 views
0

Hat jemand erfolgreich LDAPS (LDAP über SSL/TLS) von SQL Server abgefragt? Wie hast du es gemacht?Abfragen von LDAP über SSL von SQL Server

Ein Client hat uns gebeten, unser Programm in einem Netzwerk einzurichten, das LDAPS verwendet. Ich habe LDAP-Abfragen erfolgreich an vielen anderen Orten verwendet, aber es ist nicht klar, ob dies mit LDAPS funktioniert, oder wie die Syntax ist. Ich würde erwarten, dass es funktioniert, aber ich bin mir nicht sicher, wie ich es einrichten soll.

Als Test haben wir versucht, LDAPS in unserem eigenen Netzwerk einzurichten. Wir können eine Verbindung mit ldp.exe herstellen, aber der Versuch, sie von SQL abzufragen, schlägt konsistent fehl mit "Msg 7321, Level 16, State 2 ..."

  • kann eine SQL-Abfrage eine Verbindung zu LDAPS herstellen?
  • Sollte ich den Port angeben?
  • Muss das Serverzertifikat in SQL Server oder anderswo importiert werden?
  • Gibt es weitere zusätzliche Konfigurationsschritte, die über die normalerweise für die Abfrage von LDAP erforderlichen Schritte hinausgehen?
  • Hier ist die Abfrage, die normalerweise funktioniert, die ich versuche, für LDAPS zu ändern.

    SELECT COUNT(*) FROM OPENROWSET('ADSDSOObject', 'adsdatasource'; 
    'domain user here'; 'domain password here', 
        'SELECT SAMAccountName FROM 
    ''LDAP://192.168.0.105 
    WHERE SAMAccountName = ''test.test'' and objectClass = ''user'' 
         ') 
    
    +0

    Haben Sie versucht, die sichere Portnummer in der Zeichenfolge zu verwenden? 'ldaps: //: 636' –

    +0

    Ja, und das war ein wichtiger Teil der Syntax. Dank. – user3629600

    Antwort

    0

    Teilerfolg - mit der Hilfe von einigen anderen Stack-Überlauf-Beiträgen, bekam ich die Syntax herausgefunden und ist in der Lage, den Domain-Server von mir erfolgreich abzufragen.

    Die korrekte Syntax ist: SELECT COUNT (*) FROM OPENROWSET ('ADSDSOObject', 'adsdatasource'; 'Domain-Benutzer hier'; 'Domain-Passwort', ' SELECT SAMAccountName FROM '' LDAP: // server .domain.net: 636 '' WHERE SAMAccountName = '' test.test '' und objectClass = '' user '' ')

    Beachten Sie, dass der Protokollname "LDAP" zwischen Groß- und Kleinschreibung unterscheidet.

    Bearbeiten: herausgefunden, wie Sie den Domänencontroller vom Datenbankserver abfragen. Ich habe das Zertifikat vom Domänencontroller exportiert und in den Speicher vertrauenswürdiger Stammzertifizierungsstellen des Datenservers importiert.

    Ich glaube, wenn das Zertifikat von einer Zertifizierungsstelle kam und nicht selbstsigniert wurde, würde es in den Personal Store und nicht in den Trusted Root CA Store gehen.

    Verwandte Themen