Jump to content

W2K, SSL Zertifikat auf Server installiert, Verbindung mit ldp.exe OK, ABER...


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

Ich habe auf meinem W2K Server mit Service Pack 2 (mit SSL 128 Bit) den Zertifikatsdienst von der W2K Server CD installiert, danach habe ich mit dieser Anleitung ein Zertifikat für meinen Server ausgestellt:

 

Hier eine Zusammenfassung der Anforderungen für die Einrichtung von SSL auf einem Domänencontroller unter Windows 2000 mit Hilfe der Zertifizierungsstelle von Microsoft:

1. Installieren Sie eine Zertifizierungsstelle eines Unternehmens auf einem Domänencontroller unter Windows 2000, durch den ein Zertifikat auf einem Server installiert wird, oder installieren Sie auf dem Domänencontroller das Zertifikat eines Fremdanbieters.

2. Klicken Sie auf Start > Alle Programme > Verwaltungstools > Active Directory Users and Computer (Active Directory-Benutzer und -Programme).

3. Klicken Sie im Fenster 'Active Directory Users and Computers' (Active Directory-Benutzer und -Programme) mit der rechten Maustaste auf Ihren Domänennamen, und wählen Sie Eigenschaften aus.

4. Klicken Sie im Dialogfenster 'Domain Properties' (Eigenschaften der Domäne) auf die Registerkarte Group Policy (Gruppenrichtlinie).

5. Wählen Sie die Gruppenrichtlinie Default Domain Policy (Richtlinie der Standarddomäne) aus, und klicken Sie auf Bearbeiten.

6. Wählen Sie unter der Konfiguration des Computers Windows Settings (Windows-Einstellungen) aus.

7. Wählen Sie Security Settings (Sicherheitseinstellungen) und anschließend Public Key Policies (Richtlinien für öffentliche Schlüssel) aus.

8. Wählen Sie Automatic Certificate Request Settings (Einstellungen für automatische Zertifikatsanforderung) aus.

9. Fügen Sie mit Hilfe des Assistenten eine Richtlinie für Domänencontroller hinzu.

Nachdem diese Voraussetzungen erfüllt wurden, fordern alle Domänencontroller ein Zertifikat an und unterstützen LDAP über SSL unter Verwendung von Port 636.

 

Nun habe ich das Programm ldp.exe (LDAP Browser für die Active Directory) von der W2K Server CD installiert und ausgeführt. Habe port 636 ausgewählt für SSL Übertragung der Daten und ich kann mich zu meiner Active Directory einwandfrei verbinden als Administrator.

 

Danach habe ich das Serverzertifikat in eine Datei exportiert.

 

Nun zum Client: Dort habe ich mit dem Programm Portecle das exportierte Zertifikat in eine keystore datei gelesen. Diese Keystore Datei abgespeichert und in das Verzeichnis java/jre/libs/security gelegt wo auch andere Zertifikate wie VeriSign sind etc...

 

Nun stelle ich mit meinem Java /JNDI Programm wie zuvor mit port 389 (ohne SSL) erfolgreich nochmals eine Verbindung mit port 636 her, doch egal welche USER DN oder kennwort ich eingebe immer bekomme ich die Meldung: javax.naming.ServiceUnavailableException: rhein:636; socket closed

 

Nun frage ich mich weil ob das SSL (muss man das speziell für ldap irgendwie freigeben?) wirklich richtig integriert ist und funktioniert, aber mit dem Programm ldp.exe habe ich mich wie gesagt einwandfrei verbunden ??!!!!!

 

To run this program so that the client's certificate is used for authentication, you must provide (as system properties) the location and password of the keystore containing the client's certificate. Here is an example of how to run the program.

 

java -Djavax.net.ssl.keyStore=MyKeystoreFile \

-Djavax.net.ssl.keyStorePassword=mysecret \

External

 

Muss ich da ein Passwort mitgeben dass ich für die keystore Datei eingab? Wenn ich das Programm aus meiner IDE teste, kann ich doch kein Passwort mitgeben ???

 

Oder habe ich was auf dem Client nicht richtig gemacht?

Zählt die Verbindung derldp.exe mit der Active Directory auch als eine Verbindung von außen? sprich wenn nicht, kann mein port 636 irgendwie zu sein?

Ich würde mich sehr freuen wenn die Pro`s hier mir helfen könnten zumindest die möglichen Fehlerquellen auf dem Server anzugehen, das Java mach ich dann schon :p

Vielen Dank!

 

buddylight

Link zu diesem Kommentar

Error: javax.naming.ServiceUnavailableException:

 

Caught exception when resolving initial reference=NameService. Root exception is org.omg.CORBA.INTERNAL: JORB00105: In Profile.getIPAddress(), InetAddress.getByName( invalidhostname ) threw an UnknownHostException minor code: 0 completed: No

 

Explanation: This exception occurs when you specify an invalid host server name.

 

Possible causes:

 

* Incorrect host server invoked

* Invalid host server name

 

User response: Run the launchClient command again and specify the correct name of your host server with the -CCBootstrapHost parameter.

 

Auf Port 389 bekomme ich eine Verbindung. Ohne Änderung des hosts aber port 636 bekomme ich diese Exception, kann doch nicht sein??!!

 

SSL and Custom Sockets

 

Note: If you use SSL to connect to a server on a port that is not using SSL, then your program will hang. Similarly, if you use a plain socket to connect to a server's SSL socket, then your application will hang. This is a characteristic of the SSL protocol.

 

Genau das passiert bei mir wenn ich mit dem client zum server über port 636 verbinde, meine java app friert für 7 sekunden ein und spuckt dann die fehlermeldung aus... ALSO benutzt dieser Port vielleicht kein SSL ???

Link zu diesem Kommentar
SSL Verschlüsselung für LDAP geht prinzipiell, aber wie beim Browser/HTTPS-Server auch muss natürlich der Client das auch unterstützen. Unterstützt das das Programm überhaupt?

grizzly999

 

The Java Secure Socket Extension (JSSE) is a set of packages that enable secure Internet communications. It implements a Java technology version of Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols. It includes functionality for data encryption, server authentication, message integrity, and optional client authentication.

 

* JSSE in J2SE (included as part of J2SE 1.4.x and later)

 

Ich benutze Java JDK 6 sprich das JSSE muss da drin sein und vom Programmcode her stimmt auch alles man muss im Vergleich zur Verbindung ohne SSL nur eine CodeZeile hinzufügen und anstatt port 389 den port 636 wählen. Das habe ich gemacht!

 

Komischerweise habe ich nochmals jetzt das app ausgeführt und JETZE PLÖTZLICH :shock:

bekomme ich diese Meldung:

 

javax.naming.CommunicationException: simple bind failed: rhein:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

 

?? Ok da scheint was mit dem Zertifikat nicht zu stimmen, kein gültiger Zertifikationspfad kann gefunden werden. Wo wird denn dieser Pfad hinterlegt dass er auch gefunden wird?

 

Ich werde auch nochmals auf Sun forum fragen ;-)

Link zu diesem Kommentar
Hast du das Rootzertifikat passend zu deinem Client/User Zertifikat auch auf dem Client installiert ?

 

daheim nochmals mit dem keystore explorer das Zertifikat importiert in einen keystore und bekomme dabei wie heute mittag im geschäft diese Meldung:

 

Could not establish a trust path for the certificate. The certificate information will now be displayed after which you may confirm wether or not you trust the certificate.

 

d.h. ein Vertrauenspfad... konnte nicht erstellt werden aha...

 

siehe Fehlermeldung Anhang...

 

Was meinst du mit Zertifikat installiert auf dem Client? ich habe wie gesagt das Zertifikat importiert in eine Keystore Datei und diese keystore DAtei in den pfad Java/jare/lib/security gelegt das wars...

Link zu diesem Kommentar

Obwohl meine authentifizierung ja nicht über einen web server geht und somit mit dem Internet explorer nichts zu tun hat, muss ich dennoch das serverzertifikat wie auf dem screenshot in den IE importieren ??

 

Beschreibung des LDAP API über SSL-Anforderungen

 

aus obigem Link:

 

Weitere Informationen

Aktive Verzeichnis-Server-Anforderungen:

• Sie die Option Microsoft Internet Explorer installieren High Encryption Pack.

• Aktivieren Sie SSL.

• Installieren Sie die Zertifizierung-Stelle.

Aktive Verzeichnis-Client-Anforderungen:

• Installieren Sie Internet Explorer High Encryption Pack.

• Überprüfen Sie, dass das Zertifikat von der Zertifizierung-Stelle verfügbar ist.

 

lt. obigem link benötige ich evtl. auch ein High encryption Pack für meinen client der Windows xp sp2 hat, wäre das nicht schon dabei diese High encryption Pack ?

 

Das bild 2 im Anhang zeigt, dass ich das zertifikat vom server nun mithilfe des Internet Explorers importiert habe - auch erfolgreich - doch ich bekomme immer noch obige frühere java Fehlermeldung:

 

javax.naming.CommunicationException: simple bind failed: rhein:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

 

Kann mir denn keiner sagen wie und wo ich ein Zertifikat für einen ldap client installieren muss? Bitte...

Link zu diesem Kommentar

Ok es scheint ich habe den fehler gefunden... man muss den pfad zur keystore datei wo das zertifikat hineinimportiert wurde explizit im Code angeben, ich dachte es wird der Standart Pfad von java/jre/lib/security genommen, weil ich das in meinem java buch so las...

 

String keystore = "C:/Programme/Java/jre1.6.0_01/lib/security/ZertifikatBerlin"; 
System.setProperty("javax.net.ssl.trustStore",keystore);

 

auf meinem Windows XP sp2 client gibt es im Java/jre1.6.0_01/lib/security/ Pfad noch die Keystore Datei "cacerts" wenn ich diesen Dateinamen mit dem obigen keystore dateinamen "ZertifikatBerlin" austausche und mich nochmals per ssl verbinde bekomme ich wieder die alte Fehlermeldung:"...unable to find valid certification path to requested target..." sprich meine Verbindung hat funktioniert zumindest wurde mein Keystore und das Zertifikat darin irgendwie akzeptiert. ABER... müsste nicht ein Fenster aufgegangen sein wenn die ssl verbindung funktionierte wo mir dem client das Zertifikat in einem Fenster gezeigt wird und ich diese akzeptieren kann? Genau das vermisse ich noch...

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...