Java und HTTPS - die zweite
-
So, nachdem jetzt die eine Richtung klappt (mehr oder weniger), ist jetzt die weitaus wichtigere Rückrichtung dran.
Nochmal, ich habe einen Java-Chatserver, der allerdings auch über SOAP mit dem Client kommuniziert und dabei eine HTTPS-Verbindung mit Apache aufbauen möchte.
Dabei gibt es bei der verwendeten Domain zwei Subdomains, s1.example.org und s2.example.org. Für jede gibt es jeweils ein (gültiges) SSL-Zertifikat. Wenn ich mich z.B. mit Firefox mit den beiden verbinde und mir das Zertifikat anzeigen lasse, wird auch jeweils das richtige genommen.Der Chatserver soll sich jetzt mit s2.example.org verbinden, meckert dann aber:
"...unable to find valid certification path to requested target".
Wenn man das Zertifikat zum TrustStore hinzufügt, dann stattdessen:
"No subject alternative DNS name matching s2.example.com found".
Der SAN-Eintrag ist jeweils nur noch einmal der Name, der auch schon im CN steht.Wenn ich das ausführe (egal ob Mac oder Ubuntu):
openssl s_client -connect s2.example.org:443
Wird mir das Zertifikat für s1.example.org angezeigt!
Dann dürfte es kein Wunder sein, dass es nicht klappt.Woran kann das liegen? Server falsch konfiguriert? Leider weiß ich nicht genug darüber, wie eine HTTPS-Verbindung im Detail aufgebaut wird. Aber wie kann es sein, dass es mit einem Browser klappt, nicht aber mit Java und OpenSSL?
-
Nach weiterer Recherche weiß ich nun, dass es so etwas wie Server Name Indication gibt, die Sache beginnt also Sinn zu machen.
Wenn ich an openssl-servername s2.example.org
übergebe, klappt die Sache.
Wie trichtere ich nun Java ein, dass es das auch so machen soll - am besten, ohne das Programm selbst zu verändern?
-
Hrm, wenn man die beiden IP-Addressen strikt an die jeweilige Subdomain binden würde und Apache so konfiguriert, dass jeweils das richtige Zertifikat für die IP-Addresse herausgegeben wird, müsste das auch so gehen. Muss ich mal mit unserem Administrator abklären, ob sich das mit bestehenden Komponenten verträgt.
Wenn das so weitergeht, muss ich mal eine Weiterbildung als Sysadmin in Betracht ziehen. Wär' sicher nicht verkehrt.