Forum: PC Hard- und Software Probleme mit jks Keystore in Apache Tomcat


von klausi (Gast)


Lesenswert?

Hi,
wir haben Apache Tomcat mit SSL aufgesetzt (Zertifikat etc.)

Folgende Fehlermeldung beim Start des Tomcat (Port 8443 HTTPS):

java.io.IOException: Alias name [null] does not identify a key entry

Der Key ist im .jks geaddet, scheint aber als Trusted Key Entry auf und 
nicht als Key Entry bzw. Private Key Entry:

keytool -list -v -keystore mykeystore.jks -alias tomcat
Enter keystore password:
Alias name: tomcat
Creation date: Jan 22, 2018
Entry type: trustedCertEntry

Lt. Doku müssten die Zertifikate als privatekey importiert werden (?)

https://confluence.atlassian.com/bitbucketserverkb/unable-to-start-tomcat-due-to-java-io-ioexception-alias-name-not-identifying-a-key-entry-943541751.html

(bei Cause 2).

Hattet ihr so ein ähnliches Problem schon mal?

von Programmierer (Gast)


Lesenswert?

Die Fehlermeldung klingt als müsstest du im Tomcat das Key-Alias 
einstellen (hier: "tomcat"), aber hast es nicht getan, weshalb dort 
"null" herauskommt.

von Hildegard (Gast)


Lesenswert?

klausi schrieb:
> 12.10.2021

> Apache Tomcat mit SSL aufgesetzt

Alter... Software ist nicht so Euer Ding, ne?

von klausi (Gast)


Lesenswert?

Programmierer schrieb:
> Die Fehlermeldung klingt als müsstest du im Tomcat das Key-Alias
> einstellen (hier: "tomcat"), aber hast es nicht getan, weshalb dort
> "null" herauskommt.
Ok, ich probier mal in der server.xml den Key-Alias zu konfigurieren.

Hildegard schrieb:
> klausi schrieb:
>> 12.10.2021
>> Apache Tomcat mit SSL aufgesetzt
> Alter... Software ist nicht so Euer Ding, ne?
Wieso ? Tomcat lief schon mit SSL Encryption, aber das Cert. is expired.
Neuer jks aufgesetzt, Cert importiert, aber dies will er nicht da es ein 
Trusted Entry statt ein Key Entry ist. So siehts aus.

von klausi (Gast)


Lesenswert?

klausi schrieb:
> Programmierer schrieb:
>> Die Fehlermeldung klingt als müsstest du im Tomcat das Key-Alias
>> einstellen (hier: "tomcat"), aber hast es nicht getan, weshalb dort
>> "null" herauskommt.
> Ok, ich probier mal in der server.xml den Key-Alias zu konfigurieren.

Auch das hat nicht funktioniert...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

klausi schrieb:
> Lt. Doku müssten die Zertifikate als privatekey importiert werden (?)

Oh je ... Mal sehen ob ich das noch zusammen bekomme.

1. Ein Zertifikat ist kein Private Key. Ein Zertifikat ist ein 
elektronisch signiertes Dokument. Es ist also völlig richtig, dass das 
Zertifikat nicht als KeyEntry auftaucht.

2. Für deinen Server brauchst du sowohl das Zertifikat, als auch den 
Private Key im keystore.

3. keytool ist brain-dead, es kann nämlich keine Private Keys einzeln 
importieren. Das macht es ein bisschen schwierig den Private Key für ein 
Zertifikat mit keytool in einen jks zu bekommen :-)

4. keytool hält sich an den klassischen CSR-Ablauf, den let's encrypt 
nicht mag, weil er so uncool ist:

Keypair generieren. Dabei wird ein Privat- und Publik-Key Paar im 
keystore erzeugt. CSR mit keytool mit Verweis auf das Keypair 
generieren. CSR absenden und das erhaltene Zertifikat mit Verweis auf 
das Keypair mittels keytool importieren. In dem ganzen Ablauf ist der 
Private Key nicht extern sichtbar, wird intern vom keytool erzeugt und 
im jks keystore gespeichert. Nur spielt da let's encrypt nicht mit.

5. Es gibt einen Workaround um doch noch einen eigenen (oder let's 
encrypt)  Private Key in einen keytool keystore zu bekommen:

Mit einem externen Tool, z.B. openssl, einen keystore in einem Format 
generieren das keytool kennt. Beim Generieren den Private Key und das 
Cert in den mit openssl zu generierenen keystore packen. Diesen keystore 
dann mit keytool an einem Stück importieren.

6. Ja, ist scheiße. Bedanke dich bei let's encrypt, die lieber auf coole 
Hipster machen wollen statt sich an Standards zu halten.

: Bearbeitet durch User
von klausi (Gast)


Lesenswert?

Hannes J. schrieb:
> klausi schrieb:
>> Lt. Doku müssten die Zertifikate als privatekey importiert werden (?)
>
> Oh je ... Mal sehen ob ich das noch zusammen bekomme.
Hallo Hannes,

danke, ja Priv. Key ist kein Zert. das ist soweit klar. Ich hab mich 
verschrieben und meinte zusammen mit (nicht als) dem Private key 
importieren.

Konnte es jetzt lösen. Mir war nicht ganz bewusst, dass ich mit keytool 
keygen RSA usw. schon bereits einen priv.Key im .jks Keystore hatte.

Der Key - Alias muss dann 1:1 übereinstimmen, wenn ich das signierte 
Zert von der CSR bekomme und in den .jks importiere.
Mit einem wiederholten sauberen Anlauf hat es letztendlich geklappt. Mit 
P7B Format hat der Import dann letztlich funktioniert ! Auch im .jks 
scheint der priv. Key jetzt als Key Entry auf, vorher war da ein 
eigenartiger "TrustEntry", wo danach der Tomcat 4Service auf 8443 nicht 
gestartet werden konnte (alias not matched).

War evtl. irgendetwas krumm bei dem CSR Request oder nachher beim Import 
des Certs, weil das importierte Cert. nicht mit dem Priv. Key gematcht 
werden konnte.

klausi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.