Eigner HTTPS-Server: SSLHandshakeException: no cipher suites in common

StehtimSchilf

Erfahrenes Mitglied
Hi Forum

ich bastle den ganzen Nachmittag rum einen eigenen simplen HTTPS-Server zu schreiben. Einfach so, man hat ja sonst nix zu tun.

Leider scheitere ich an der bekannten
Code:
javax.net.ssl.SSLHandshakeException: no cipher suites in common

Exception.

Ich habe derzeit kein Zertifikat, da ich denke, dass so jederman auf meinen HTTPS-Server zugreifen kann.

Im Anhang finden sich die Sourcen. Doch sobald ich im Browser https://localhost:[port] eingebe, erhalte ich obige Exception. Ich habe den ganzen nachmittag gegoogelt, aber irgendwie scheint es keine einfache Lösung zu geben. Ich habe zwar sehr wohl alle unterstützten cipher suites aktiviert:

Code:
sslss.setEnabledCipherSuites(supportedCipherSuites);

doch trotzdem, nix!

Was ich möchte ist, dass ich einfach via Browser auf meinen "Web-Server" zugreifen kann und zwar mit https://

mit http:// gehts leicht (s. Code).

Kann hier evtl. jemand meinen Code so vervollständigen, dass ich nicht mehr diese Exception erhalte?

cheerioh & habt Dank
SiS
 

Anhänge

  • src.zip
    3,3 KB · Aufrufe: 34
Hi

Danke für Deine Antwort. Ich habe das Zertifikat wieder (das hatte ich schon im grossen Projekt) in meinem angefügten Source aktiviert und siehe da - funktioniert!

ich habe lediglich:
Code:
		 System.setProperty("javax.net.ssl.keyStore", "./keystore");
		 System.setProperty("javax.net.ssl.keyStorePassword", "tutorials");

in main() aufgerufen und natürlich ein Zeritifkat erstellt:
Code:
keytool -genkey -keystore tutorials.keystore -keyalg RSA

funktioniert!

Also wieder zurück zu meinem Hauptprojekt, dort http auf https umgemodelt, funktioniert nicht (daher grund für dieses post). Obwohl ich den identischen Code verwende. Ich habe das Starten des HTTPS-Servers an verschiedenen Stellen aufgerufen und habe herausgefunden, dass der Fehler (no cipher suites in common) nach folgenden Zeilen auftritt:


Code:
	env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
	env.put(Context.PROVIDER_URL, this.ldapUrl);
	env.put(Context.SECURITY_AUTHENTICATION, "simple");
	env.put(Context.SECURITY_PRINCIPAL, this.principals);
	env.put(Context.SECURITY_CREDENTIALS, this.credentials);
	env.put(Context.REFERRAL, "ignore");

	//ab hier für SSL       
	env.put(Context.SECURITY_PROTOCOL, "ssl");

	System.setProperty("javax.net.ssl.trustStore", this.trustStore);
	if (trustStorePassword != null)
		System.setProperty("javax.net.ssl.trustStorePassword", this.trustStorePassword);

Diese Code-Zeilen werden in meiner LDAP-Klasse aufgerufen um eine SLDAP-Verbindung herzustellen. Wird mein Beispielcode VOR diesen Zeilen aufgerufen, dann funktionierts der HTTPS-Server, aber SLDAP geht nicht, wird er NACH diesen Zeilen aufgerufen, dann funktionierts nicht mehr und ich erhalte (no cipher suites in common).
Interessanterweise sehen die Codezeilen für eine LDAP-Verbindung fast identisch aus (ohne die Zeilen // ab hier für SSL).

Bemerkung: der Pfad zum Truststore und der Pfad zum Keystore in setProperty() sind identisch, ebenso die Kennwörter!

Ich hatte etwas ähnlich einmal: siehe hier

Wenn ich den HTTPSServer VOR dem Instanzieren der LDAP-Klasse starte, erhalte in der LDAP-Klasse eine Naming Exception: simple bind failed!

Irgendetwas verschweinere ich gewaltig.

cheerioh & Dank
SiS
 
Zuletzt bearbeitet:
*hoppp*

Entschuldigt, dieses pushen, aber irgendwie konnte mir in meinem Umfeld niemand helfen!

Keiner eine Idee, wieso
nur SLDAP mit HTTP
oder
LDAP mit HTTPS

funktioniert?

Alle Anregungen sind gerne willkommen! Danke
cheerioh & SiS
 
So, Problem besteht noch immer (leider).

Ich habe mal die Sourcen hochgeladen. Zum Testen braucht ihr natürlich:
- einen Domain Controller
- einen Keystore (allenfalls neu erstellen)
- sein Root Zertifikat (in den Keystore importieren)
- eigenes SSL Zertifikat (ebenfalls in den Keystore importieren)

Für die Tests müsst ihr die Klassen
- HttpsWebServerTest()
- LdapConnectionTest()

cheerioh & thx
SiS
 

Anhänge

  • src.zip
    12,1 KB · Aufrufe: 29
Zuletzt bearbeitet:
Zurück