Server akzeptiert neues Zertifikat nicht

Maliko

Bekanntes Mitglied
Hey,

ich verzweifle gerade an einem Problem. Und zwar habe ich einen SOAP-Webservice, welcher auf meinem Rechner zum Test local läuft. Das Problem ist, dass das Zertifikat welches damals verwendet wurde inzwischen seit einem Jahr abgelaufen ist (selbstsigniert). Der Server startet zwar noch problemlos und im Browser kann ich die WSDL auch aufrufen, aber mein Client verweigert natürlich die Verbindung weil das Zertifikat abgelaufen ist.

Daher habe ich jetzt ein neues Selfsigned-Cert erstellt (läuft ja zum Test bei mir nur local und live funktioniert es auch weil anderes und gültiges Zertifikat) und in den Keystore importiert, doch dieses wird scheinbar nicht akzeptiert. Wenn ich das alte drin lasse, läd er trotzdem einfach das alte abgelaufene Zertifikat und wenn ich das alte Zertifikat lösche bekomme ich plötzlich die Fehlermeldung "Beim Verbinden mit 127.0.0.1:5642 trat ein Fehler auf. PR_END_OF_FILE_ERROR".

Da ich von diesem Zertifikatskram nur absolute Grundkenntnisse habe (ich bin nun mal Entwickler und kein SysAdmin) hab ich nicht die geringste Ahnung was da jetzt schief gelaufen ist. Das Zertifikat ist im Keystore drin und es ist auch gültig. Hat irgendjemand eine Ahnung was da schief läuft? Wie schon gesagt mit dem alten Zertifikat kann ich im Browser zumindest die WDSL aufrufen, wenn ich die Warnmeldung wegklicke.
 

Oneixee5

Top Contributor
Da gibt es viele Möglichkeiten, z.B.: wäre es möglich, dass zur Laufzeit ein anderer Keystore genutzt wird, als der den du bearbeitet hast.
 

Maliko

Bekanntes Mitglied
Nope das kann nicht sein, da ich den Pfad zum Keystore explizit angebe. Und wie schon gesagt, solange das alte Zertifikat im Keystore ist, läd er es auch und ich kann die WSDL aufrufen. Sobald ich es rauslösche und nur noch das neue drin ist nicht mehr. Es wird definitiv der Keystore verwendet.
 
K

kneitzel

Gast
Wie genau greifst Du auf das Zertifikat zu? Bekommst Du dabei ggf. irgendwelche Fehlermeldungen? Ohne Details ist es sehr schwer, etwas konkretes zu sagen und herum raten macht wenig Sinn.
 

Maliko

Bekanntes Mitglied
Nein das ist ja das merkwürdige. Der Server startet ganz normal ohne Fehler. Ich kann nur nicht drauf zugreifen. Ich bekomme also auch keinen SSL-Error.
 

Maliko

Bekanntes Mitglied
Der Server ist selbst geschrieben. Daher habe ich das ursprünglich auch im Bereich Netzwerk gepostet. Keine Ahnung warum das überhaupt hier rüber verschoben wurde.

Der Quellcode des Servers selbst ist folgender:

Java:
ExecutorService executor = Executors.newFixedThreadPool(20);
     
this.endpoint = Endpoint.create(new WebServiceImpl());
InetSocketAddress address;
char[] password;
FileInputStream input;

if(!GlobalProperties.isLocal()) {
    if(!GlobalProperties.isDebug()) {
        address = new InetSocketAddress(InetAddress.getByName("service.domain.ltd"), 5642);
        password = "xxx".toCharArray();
        input = new FileInputStream(System.getProperty("user.dir") + "\\lib\\security\\prod.jks");
    } else {
        address = new InetSocketAddress(InetAddress.getByName("service.domain.ltd"), 5643);
        password = "xxx".toCharArray();
        input = new FileInputStream(System.getProperty("user.dir") + "\\lib\\security\\prod.jks");
    }
} else {
    if(!GlobalProperties.isDebug()) {
        address = new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 5642);
    password = "xxx".toCharArray();
    input = new FileInputStream(System.getProperty("user.dir") + "\\lib\\security\\localhost.jks");
    } else {
        address = new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 5643);
        password = "xxx".toCharArray();
        input = new FileInputStream(System.getProperty("user.dir") + "\\lib\\security\\localhost.jks");
    }
}

this.server = HttpsServer.create(address, 0);
SSLContext ssl = SSLContext.getInstance("TLSv1.2");

KeyStore store = KeyStore.getInstance("JKS");
store.load(input, password);

KeyManagerFactory keyManager = KeyManagerFactory.getInstance("SunX509");
keyManager.init(store, password);

TrustManagerFactory trustManager = TrustManagerFactory.getInstance("SunX509");
trustManager.init(store);

ssl.init(keyManager.getKeyManagers(), trustManager.getTrustManagers(), null);

this.server.setHttpsConfigurator(new HttpsConfigurator(ssl) {
    @Override
    public void configure(HttpsParameters params) {
        try {
            SSLContext context = SSLContext.getDefault();
            SSLEngine engine = context.createSSLEngine();
            params.setNeedClientAuth(false);
            params.setCipherSuites(engine.getEnabledCipherSuites());
            params.setProtocols(engine.getEnabledProtocols());
            params.setSSLParameters(context.getDefaultSSLParameters());
        } catch (NoSuchAlgorithmException e) {
            System.out.println(e.getMessage());
        }
    }
});

this.server.start();

HttpContext context = server.createContext("/service");
this.endpoint.setExecutor(executor);
this.endpoint.publish(context);

Ok, keine Fehlermeldungen. Details gibst du aber weiterhin nicht....
Ich konnte dir gestern leider keine genaueren Details mehr geben, da ich nicht mehr im Büro war, sondern bereits zu Hause. Ich hoffe der Quellcode reicht zum Verständnis. Falls nicht, sag mir einfach was für Infos du brauchst, dann geb ich sie dir gerne. Notfalls kann ich auch das SSL-Zertifikat anhängen. Ist ja von mir selbst erstellt.

Edit: Beim Debuggen hab ich auch sichergestellt, dass er den localhost-Keystore läd und nicht den Prod. Im Prod-Keystore ist das live-Zertifikat dass auch einwandfrei funktioniert. Der Unterschied bei den beiden Ports ist übrigens dass der 5642 auf die Livedatenbank geht und der 5643 auf die Testdatenbank (also unser Testsystem). Da die beide gleichzeitig laufen, brauchten wir halt 2 Ports. Nur zur Erklärung. Und die beiden this-Variablen werden auf Klassenebene defininiert, ich hab jetzt nur die Funktion gepostet, die den Server startet. Es gibt noch eine Funktion die den Server stoppt, die halt auch auf die this-Variablen zugreift.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Also der Code sieht erst einmal ok aus - und deine Aussage, dass es so ja schon funktionierte / in Produktion funktioniert dürfte das bestätigen.

Wenn Du das alte Zertifikat drin lässt, dann ist es "normal", dass dies genommen wird. Der default KeyManager nnimmt immer das erste Zertifikat, dass er findet.

Der Fehler, den Du beschreibst, kommt aber vom Client, oder? Auf dem Server hast Du keine Meldungen zu dem Verbindungsversuch, richtig?

Kannst Du einmal mit dem Webbrowser auf die Applikation zugreifen? Da kann man dann hoffentlich mehr Informationen zu den Problemen des Handshakes finden. (Unabhängig davon, ob Du das http Protokoll komplett falsch ist - ich hoffe, dass er da auch beim Browser nicht erst zu kommen wird.)

Unabhängig davon wäre der zweite Ansatz, dass man einfach einmal durchgeht, wie Du das Zertifikat erstellt hast und was da alles mit in deinem Keystore drin ist. Ich vermute hier ein Problem. Schau im alten einmal rein - da dürftest Du neben dem eigentlichen Zertifikat mehr finden. Zumindest ein intermediate Zertifikat dürfte da noch mit drin sein. (Das Du vermutlich im Laufe der Generierung mit erstellt hast). Wenn Du alles komplett neu gemacht hast und nicht sozusagen "die alte Cert Stelle" erneut verwendet hast, dann müssten hier diese zusätzlichen Zertifikate auch getauscht werden.
 

Maliko

Bekanntes Mitglied
Hey,

die Fehlermeldung die ich im ersten Post geschrieben habe, bekomme ich sowohl im Browser als auch im Client. Das macht tatsächlich keinen Unterschied.

Bezüglich des Keystores allgemein schaue ich mir das mal genauer an.

Edit: Problem gelöst. Es war tatsächlich der Keystore ansich gewesen. Ich hab jetzt einfach den kompletten Keystore ersetzt und jetzt funktioniert es wieder.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Volano Server einrichten Server einrichten und konfigurieren 4
W Schnittstelle zwischen Server und Smartwatch Server einrichten und konfigurieren 3
S Tomcat Server nicht erreichbar Server einrichten und konfigurieren 21
O Ich Suche GTA 5 RP Server Scripter für atl:V Server einrichten und konfigurieren 0
F Wie laufenden Docker Container auf Debian Server von außen über den Browser erreichen. Server einrichten und konfigurieren 3
M Keine Verbinung zu Java-Https-Server möglich (Handshake-Fail) Server einrichten und konfigurieren 7
J Eigenen Socket auf entferntem Server laufen lassen Server einrichten und konfigurieren 7
M embeddet Jetty Server mit MyFaces Howto gesucht Server einrichten und konfigurieren 0
S JRE distribution Server Server einrichten und konfigurieren 0
R Bei externem Hosting: Neben WildFly "normaler" http-Server nötig? Server einrichten und konfigurieren 3
OnDemand Virtual Server in Glassfish findet Recource nicht Server einrichten und konfigurieren 1
I JAVA EE Server mit integrierter Datenbank Server einrichten und konfigurieren 0
OnDemand Glassfish: Properties wie auf Server Server einrichten und konfigurieren 1
M Java-EJB-Anwendung auf Server bzw. Client deployen Server einrichten und konfigurieren 0
D Daten auf Apache Tomcat Server ablegen, möglich ? Server einrichten und konfigurieren 1
J Java Programm auf Linux Server Laufen lassen Server einrichten und konfigurieren 6
M Günstigen Applikation Server? Server einrichten und konfigurieren 5
K Server aufsetzen Server einrichten und konfigurieren 6
M Wo Server hosten Server einrichten und konfigurieren 9
B FTP-Server einrichten. Server einrichten und konfigurieren 10
U Normalen Apache-Http-Server und AS nebeneinander Server einrichten und konfigurieren 2
M Glassfish server rendert keine Tags Server einrichten und konfigurieren 4
V One-Shot-HTTP-Server Server einrichten und konfigurieren 6
R Multi-Server Architektur im AS (JBOSS/Glassfish) realisieren Server einrichten und konfigurieren 2
P Ortung von Usern und Umleitung an Server in GlassFish? Server einrichten und konfigurieren 7
P JBoss 7 Server log4j.jar Server einrichten und konfigurieren 10
P JBoss Server Server einrichten und konfigurieren 2
G Am Server Dateien ablegen Server einrichten und konfigurieren 20
G Server Config File Server einrichten und konfigurieren 2
C [Glassfish] Entfernten Glassfish Server in Eclipse verbinden Server einrichten und konfigurieren 3
G Offener Port am Server Server einrichten und konfigurieren 17
T App Server für Ubuntu gesucht Server einrichten und konfigurieren 9
ruutaiokwu svn server auf lokalem filesystem unter windows einrichten Server einrichten und konfigurieren 14
M Hardwareempfehlung für TOMCAT Server Server einrichten und konfigurieren 8
D Probleme Installation JBoss Application Server Server einrichten und konfigurieren 5
R Spring Server für Spring-Framework notwendig? Server einrichten und konfigurieren 3
R Kann SpringSource dm-Server nicht starten Server einrichten und konfigurieren 5
P Http server Server einrichten und konfigurieren 2
G Tomcat server.xml einrichten Server einrichten und konfigurieren 1
G pendant zu globalem tomcat web.xml im ibm websphere-server Server einrichten und konfigurieren 2
C Eclipse und externer Tomcat Server Server einrichten und konfigurieren 6
C XAMPP auf 1und1 root server Server einrichten und konfigurieren 2
S Eine Frage zu log4j, jboss an sql-server (im teigmantel ;) ) Server einrichten und konfigurieren 3
J Tomcat, web.xml, server.xml -> Projektpfad Server einrichten und konfigurieren 18

Ähnliche Java Themen


Oben