Verständnisproblem TLS

Thallius

Top Contributor
Hallo,

ich habe eine Java Client App welche sich Daten aus einem Webservice holt. Dieses soll natürlich per HTTPS geschehen. Dazu habe ich einen Webspace mit TLS Zertifikat bei Strato angemietet. Damit ich nun aber mit HTTPS auf den Webservice zugreifen kann, muss ich der App das Zertifikat bekannt machen oder ich bekomme einen Fehler das der Hostname nicht verifiziert werden kann. Das Zertifikat bei Strato läuft aber immer nur 1 Jahr. Das würde ja nun bedeuten, dass ich jedes Jahr eine neue App rausbringen muss damit sie weiterhin mit dem neuen Zertifikat funktioniert. Alternativ kann ich auch mit ein paar Tricks den Hostname Verifier abschalten. Aber das kann ja nicht der Weisheit letzer Schluß sein.

Also wie macht man das richtig oder was habe ich hier nicht richtig verstanden wie das funktioniert?

Gruß

Claus
 

httpdigest

Top Contributor
Zertifikate werden für Hostnamen ausgestellt und dienen dazu, dem Client zu beweisen, dass er mit dem richtigen Server spricht, also der Server der ist, der er vorgibt, zu sein. Wenn es sich dabei um ein durch eine vertrauenswürdige Certificate Authority (CA) ausgestelltes Zertifikat für deine Webspace URL handelt, dann brauchst du das Zertifikat nirgendwo hinzufügen/installieren. Es dient dann ja nur dazu, dass du gesicherte HTTPS Verbindungen zu deinem Webspace herstellen kannst.
Aber ein Webspace ist ja nunmal auch kein Webservice. Ein WebService ist ein Programm, das irgendwo läuft und unter einer URL erreichbar ist. Also, was genau soll dein WebService tun und wo läuft dieser? Oder ich habe das Strato Webspace Modell noch nicht ganz verstanden.
 

Thallius

Top Contributor
Ich denke dann liegt es daran, dass Strato mir kein offizielles Zertifikat verkauft hat für meine Domain. Das fände ich dann aber schon ziemlich frech...

Du kannst Dir das Zertifikat ja mal ansehen


Gruss

Claus
 

httpdigest

Top Contributor
Sieht aber gut aus. Java 11.0.1 vertraut dem Zertifikat (und Chrome auch):
Java:
import java.net.*;
import java.security.cert.*;
import javax.net.ssl.*;
public class CertTest {
  public static void main(String[] args) throws Exception {
    HttpsURLConnection conn = (HttpsURLConnection) new URL(
        "https://www.geccservice.com/").openConnection();
    System.out.println(conn);
    print_https_cert(conn);
  }
  private static void print_https_cert(HttpsURLConnection con) throws Exception {
    System.out.println("Response Code : " + con.getResponseCode());
    System.out.println("Cipher Suite : " + con.getCipherSuite());
    System.out.println("\n");
    Certificate[] certs = con.getServerCertificates();
    for (Certificate cert : certs) {
      System.out.println("Cert Type : " + cert.getType());
      System.out.println("Cert Hash Code : " + cert.hashCode());
      System.out.println("Cert Public Key Algorithm : "
          + cert.getPublicKey().getAlgorithm());
      System.out.println("Cert Public Key Format : "
          + cert.getPublicKey().getFormat());
      System.out.println("\n");
    }
  }
}
 

mihe7

Top Contributor
Das Zertifikat ist in Ordnung. Vermutung: es wird SNI benötigt und Deine Anwendung sendet den Servernamen nicht mit.
 

Thallius

Top Contributor
Ok, der Auftraggeber steht bei 6u43 oder sowas..... Manchmal ist Austragsarbeit ein Kreuz...

Trotzdem schonmal Danke

Claus
 

JuKu

Top Contributor
Dann wird es wohl eher daran liegen, dass ich mit Java6 arbeiten muss....

Wie @mihe7 schon sagte: Dann passt das Root CA zu 99,99% nicht.
Gerade in Java 8 und Java 11 ist da sehr viel in dieser Hinsicht passiert.
Evtl. solltest du mit deinem Auftraggeber mal sprechen, dass er da ne Sicherheitslücke in seinem Haus besitzt, denn Java 6 wird schon seit Jahren nicht mehr supportet.
 

mrBrown

Super-Moderator
Mitarbeiter
@mrBrown Echt? Ich dachte Oracle hat das JRE 6 jetzt gänzlich eingestampft, inkl. den Extended / Security Support?
Oder redest du von einer anderen JVM?
Stimmt, hatte von Oracle nur das letzte Update von Ende letzten Jahres im Kopf, das dürfte auch das generell letzte von denen gewesen sein.
Bei Azul und Redhat müsste das auch keinen Support mehr bekommen, ob irgendwo anders weiß ich nicht
 

Ähnliche Java Themen


Oben