Keytool: pkcs12 in JKS

Sleepwalker

Mitglied
Moin,

ich weiß nicht, ob ich hier richtig bin.

- Ich habe einen Keystore zum Testen bekommen. Der hat zwei Einträge.
Alias priv ist ein PrivateKeyEntry.​
Alias cert ist ein trustedCertEntry mit einer Zertifikatskette.​

Soweit, so gut. Damit läuft alles. Nun möchte ich selbst einen Keystore erstellen.



1. Ich habe mittels openssl einen Private Key (PEM-Format mit des3) und einen CSR erstellt.

2. Der CSR ging weg und es kam eine Zertifikartskette in pkcs7 zurück.

3. Das pkcs7 habe ich in PEM umgewandelt
Code:
openssl pkcs7 -in incerts.p7b -out outcerts.csr -print_certs

4. Nun mache ich aus der neuen Zertifikatskette und dem Private Key einen pkcs12 Keystore
Code:
openssl pkcs12 -export -out keystore.p12 -inkey mykey.pem -in outcerts.crt
Darin sind jetzt zu Anfang die Zertifikate und am Ende mein Private Key.​

5. Jetzt habe ich versucht aus dem p12 ein jks zu machen
Code:
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -destkeystore keystore.jks

Nun der Fehler:
Im JKS sind nicht zwei, sondern nur ein Eintrag. Nämlich ein PrivateKeyEntry. Dort sind sogar die Zertifikate drin?!?!

Frage:
Wie bekomme ich Zertifikate und Private Key mittels separaten "aliasen" in den JKS?

Danke im Voraus.
 

Sleepwalker

Mitglied
Scheint kein sonderlich beliebtes Thema zu sein :D Ich hänge immer noch fest.

Eine Idee, die ich nicht umsetzen kann:
Wie bekomme ich nur den Private Key in einen PKCS12 keystore bzw. gleich mit alias "priv" in einen neuen JKS?

Wenn das ginge, könnte man mit
Code:
keytool -importcert -alias cert ...
die Zertifikate separat hinzufügen.

Hat da vllt. jemand eine Idee?
 
G

Guest2

Gast
Moin,

ich nutze dafür immer den KeyMan von IBM, der kann problemlos P12 in JKS importieren. Außerdem lässt sich damit alles Relevante im JKS ansehen/bearbeiten. (Ist kostenlos, aber imho muss man sich mittlerweile für den Download registrieren.)

Gruß,
Fancy
 

Sleepwalker

Mitglied
Danke,

ich habe leider vergessen zu erwähnen, dass das automatisiert ablaufen muss. KeyMan hat anscheinend nur rudimentäre Kommandozeilenoptionen.

Werde trotzdem mal schauen, ob mein Vorhaben damit funktioniert. Als finale Lösung brauch ich aber etwas Automatisierbares.
 
G

Guest2

Gast
OK, wenn Du das automatisieren willst, hast Du mal versucht den JKS direkt selbst zu bauen?

Von P12 aus sollte das in etwa so gehen: https://gist.github.com/1131587 (allerdings nur runtergeschrieben, noch nicht wirklich getestet)

(Die Schritte die Du vorher per OpenSSL machst, lassen sich auch in Java realisieren.)

Gruß,
Fancy
 

Sleepwalker

Mitglied
Mit Java hab' ich das noch nicht probiert, weil ich dachte, mit OpenSSL ginge es schneller. Aber nach 3 Tagen Probiererei noch von "schnell" zu reden, ist wohl nicht mehr angebracht...
Habe das Gefühl, dass ich die Zertifikatskette beim Konvertieren irgendwie immer zerhaue und es deswegen nicht mit OpenSSL klappt.

Danke für den Code. Werde ich wohl morgen mal ausprobieren. Gibt es irgendwo eine Art Tutorial, wie man mit Java Zertifikate & Schlüssel konvertiert und all so Kram?
 

Sleepwalker

Mitglied
Ich glaube, nun scheint es zu funktionieren.

Soweit ich das verstanden habe, wurde nur der PrivateKeyEntry erstellt, weil eben nur der private Schlüssel mit den Zertifikaten, die zurück kamen, signiert wurde?! Kommt das so hin?

Ich habe
- nach Schritt 6 den Alias im JKS von "1" auf "priv" geändert
- ein weiteres bekommenes Zertifikat mit
Code:
keytool -importcert -v -alias cert -trustcacerts -file certificate.cer -keystore keystore.jks
eingebunden.

Fertig.

Nun muss ich das nur noch testen...

Kann mir jemand den genauen Ablauf erklären, den ich ab Schritt 4 getätigt habe? Zum Verständnis. Bin mir nicht sicher, ob ich das 100%ig richtig verstanden habe.
Danke.
 

Ähnliche Java Themen

Neue Themen


Oben