SSLHandshakeException obwohl Cert im Truststore vorhanden

Maliko

Bekanntes Mitglied
Hoi,

ich hab grad ein kleines aber verzwicktes Problem. Und zwar muss ich über Java einen Request auf eine Https-Seite machen und bekomme dabei immer folgende Fehlermeldung:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching aspserver.topm.de found.
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:987)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at topmxmlermittlung.Handler.TopMHandler.getBelege(TopMHandler.java:35)
at topmxmlermittlung.TopMXmlErmittlung.main(TopMXmlErmittlung.java:39)
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching aspserver.topm.de found.
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:214)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:96)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:200)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596)
... 14 more

Ich weiß das der Fehler normalerweise auftritt, wenn das Zertifikat nicht in cacerts importiert wurde. Dies habe ich aber getan. Das Problem ist auch dass das Zertifikat nicht für die Seite ist sondern für eine andere (darauf habe ich aber keinen Einfluss, weil auf Seiten des Anbieters). Hat irgendjemand eine Idee wie ich den Fehler behoben bekomme. Ich meine es ist relativ klar dass es am falschen Zertifikat liegt nur wie zum Geier sage ich meinem System dass er das entsprechende Zertifikat benutzen soll auch wenn es nicht für die Seite eigentlich ist?
 
Du könntest folgendes probieren:
Java:
HttpsURLConnection.setDefaultHostnameVerifier((host, sess) -> "aspserver.topm.de".equals(host));
Muss natürlich gemacht werden, bevor die Connection erzeugt wird.
 

Neue Themen


Zurück
Oben