Import SSL Zertifikat in keystore

Fohnbit

Top Contributor
Hallo!

Ich habe mein SSL von Host Europe. Zur Verfügung stehen:
PEM
CRT
CSR
CA
KEY
PKCS#12

Ich muss dies für eine Java Applikation auf meinem Ubuntu Server einspielen.
Wenn ich aber die PEM hochlade und:
openssl x509 -outform der -in certificate.pem -out certificate.der
keytool -import -alias your-alias -keystore cacerts -file certificate.der

Dann wird es importiert. Aber der Connect von Amazon Alexa meldet immer noch einen Fehler.

Geprüft habe ich das Cert mit einem Online Tool und da scheint alles ok zu sein.
Kann sein das ein root Zertifiakt im keystore fehlt?
 
Die Frage ist erst einmal, was die Java Anwendung erwartet. Java kann auch aktuell mit pkcs12 umgehen (ist auch wohl der empfohlene Weg seit einiger Zeit gegenüber keystore). Daher wird ggf. gar keine Umwandlung notwendig sein.

Daher:
  • was erwartet die Anwendung?
  • was hast Du konfiguriert?
  • was für Meldungen kommen?
 
Hallo Konrad!

Was die Java Anwendung genau erwartet, kann ich leider nicht sagen, da ich keinen Status oder ähnliches sehe. Ich kann darin nur den keystore angeben. Lediglich Kennwort Fehler werden angezeigt.

Konfiguriert habe ich im Sinne da nichts. Nur den keystore muss ich jedes Jahr aktualisieren. Ich meine aber mich zu erinnern, das da einmal etwas mit dem Root cert war. Kann sein das das fehlt?

Meldungen bekomme ich leider eben gar keine :-(
 
Also Kennwort Fehler hört sich eher so an, dass das Zertifikat das falsche Passwort hat. Du kannst teilweise ein Passwort sowohl auf dem Zertifikat als auch auf dem Store haben.

Damit einem Zertifikat vertraut wird, musst Du die ganze Kette haben und dieser Vertrauen. In der Regel sieht es so aus:
  • Du vertraust den oberen Zertifikaten. Das sind die Root Zertifikate.
  • Die Anbieter arbeiten aber nicht direkt mit diesen Zertifikaten. Statt dessen arbeiten diese mit den sogenannten Intermediate Zertifikaten
  • Mit diesen Intermediate Zertifikaten wird dann Dein Zertifikat signiert.
Das ist so eine minimale Kette. Intermediate Zertifikate könnte es aber prinzipiell auch mehrere geben.

Wenn Du nun z.B. ein SSL abgesicherten Service hast, dann brauchst Du
  • den private Key - damit wird alles verschlüsselt
  • den public und intermediate key - die werden vom Client von Dir angefordert. Wichtig ist: Der Server muss diese dem Client geben. Der Client sucht nicht selbst nach intermediate Zertifikaten.

Der Client fragt den Server dann nach seinen Zertifikaten. Die werden dann auf Gültigkeit geprüft. Das Minimum hier ist dann, ob es eine vertrauenswürdige Kette gibt bis hin zu einem vertrauen Zertifikat (Das ist dann das Root Zertifikat) sowie die Gültigkeit. Zusätzlich kann aber auch für jedes Zertifikat geprüft werden, ob dieses widerrufen wurde.

Aber das ist halt speziell ein Vorgehen für SSL Verschlüsselung. Es gibt aber auch viele andere Szenarien, wo ganz andere Abläufe da sind.
 
Vielen Dank für die exakte Infos.

Wenn ich nun vom meinem Provider ein SSL cert erhalte, benötige ich dann auch noch die root und/oder intermediate certs.
Wie könnte ich diese am einfachsten erhalten? Starfield meine ich, nutzt Host Europe.
 
Das root Zertifikat solltest Du nicht benötigen. Die Intermediate Zertifikate solltest du aber noch brauchen - aber evtl. sind die bereits bei den bereitgestellten Zertifikaten dabei.

Wichtig: Bei einem fehlenden Intermediate Zertifikat bekommst Du auf dem Server keinen Fehler! Der Client vertraut dann nur nicht dem Zertifikat!

Bezüglich des Intermediate Zertifikates: Einfach mal nach "starfield intermediate certificate download" suchen. So Dinge sind nichts geheimes und die Anbieter wollen die Intermediate Zertifikate nicht verstecken. Das führt dann zu
Repository (starfieldtech.com)
Und da sind dann auch die Intermediate Zertifikate verfügbar. Vermutlich wird es "Starfield Secure Server Certificate (Intermediate Certificate) - G2" sein, aber das kannst Du auch an Deinem Zertifikat sehen. Denn das ist ja mit dem Intermediate Zertifikat signiert worden.
 
Danke Konrad.

Wenn ich auf meiner Webseite das cert öffne, erhalte ich:



1695552948385.png


Ich habe nun ein altes keystore gefunden, das damals funktioniert hat. Lade ich es in den Keystore Explorer in Windows:
1695553915080.png

Lade ich aber nun mein aktuelles:
1695553986243.png
Also doch deutlich etwas anderes.

Danke für deine tolle Hilfe!
 
Zuletzt bearbeitet:
Ja, das sieht danach aus, dass das wirklich das gesuchte Zertifikat ist. Das fehlende "Server" im Namen ist zwar etwas irritierend, aber es ist das am besten passende Zertifikat auf der Webseite.Und das ist das Haupt Zertifikat denke ich mal, denn der Fingerprint bei den Bundles ist auch der Fingerprint dieses Zertifikates.
 
Danke Konrad. Ich habe es nun über den Windows Keystore Explorer so hinbekommen:
1: Donwload Keystore Explorer Windows
2: Werzeuge => Schlüsselpaar importieren
3: OpenSSL
4: Kennwort deaktivieren
5: eigenes cert.key
6: eigenes cert.crt
7: Selbes Kennwort wie der keystore hat, eingeben (wichtig)
8: Rechts Klick => Zertifikatskette bearbeiten => Zertifikate anfügen
9: Root Cert importieren (https://certs.starfieldtech.com/repository/sfig2.crt.pem)

Dann klappt es. Nun würde ich das aber gerne über die CLI von Linux in den keystore einfügen. Kannst du die Vorgehensweise erkennen und auf die keystore commands von Linux anwenden?
 
Die Befehle hattest Du ja eigentlich schon. Du musst natürlich die Passwörter auch angeben beim keystore Aufruf. Evtl. das Passwort auf dem Zertifikat (private-key) erst mit openssl auf das Passwort anpassen, das Du im Keystore haben willst. openssl rsa -des3 -in server.key -out server.key.new müsste da der Befehl sein denke ich mal.
 

Neue Themen


Zurück
Oben