2013-10-28 5 views
6

Ich erhielt ein neues Zertifikat in crt/cert Format. Wenn ich diese Datei in einem Texteditor öffne, fügte sie der Datei die vollständige Zertifikatskette hinzu. Jedes Zertifikat beginnt mit:Nicht in der Lage, P7B-Datei in Keystore-Datei zu laden

-----BEGIN CERTIFICATE----- 

und endet mit:

-----END CERTIFICATE----- 

Es gibt keine Leerzeilen dazwischen. Da ich nicht scharf auf openssl bin, öffnete ich das Zertifikat in Windows und exportierte das Zertifikat mit der vollständigen Kette im Format PKCS#7 (test.p7b). Wenn ich diese Datei öffne, sieht alles gut in Windows aus und die Wurzel, das Zwischenprodukt und das Zertifikat sind alle in der Kette.

Wenn ich die Datei test.p7b auf dem Server setzen und versuchen, dies mit keytool zu importieren wie folgt:

keytool -import -trustcacerts -alias my.domain.com -keystore my.domain.keystore -keypass changeme -storepass changeme -file test.p7b 

ich die folgende Fehlermeldung erhalten:

keytool error: java.lang.Exception: Input not an X.509 certificate 

Wenn ich testen Sie die P7B Datei-I erhalten Sie auch Fehler:

oder:

bash-4.1$ openssl x509 -in test.p7b -inform DER -text 
unable to load certificate 
140396587853640:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320: 
140396587853640:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=X509_CINF 
140396587853640:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:752:Field=cert_info, Type=X509 

Kann mir jemand helfen?

+0

openssl x509 -in test.p7b -Informiere DER -Text –

+0

@CamilleG importiert wurde. aktualisierte Frage mit dieser Ausgabe. Erzeugt auch Fehler –

Antwort

5

Beim Importieren einer Zertifikatskette erwartet keytool, dass die Zertifikate in DER-Form geladen werden. Sie können eine solche Bündel mit OpenSSL erstellen:

1 - Wandeln Sie alle Zertifikate im DER-Format

openssl x509 -in certificate.pem -outform DER -out certificate.crt 

2 - Concat alle DER-Zertifikate in einer einzigen Datei

cat cert1.crt cert2.crt ... > chain.der 

3 - Jetzt können Sie importieren Sie die Kette in Keystore- mit keytool

keytool -importcert -trustcacerts -alias <myalias> -file chain.der -keystore keystore.jks -storepass <mypassword> 

Beachten Sie, dass myaliasMUSS dasselbe sein wie, wenn der Schlüssel generiert wurde.

4 - überprüfen, ob die Kette erfolgreich

keytool -list -v -keystore keystore.jks 
+0

Dieses Zertifikat ist nicht unser eigenes Zertifikat, sondern ein Zertifikat von unserem Kunden erhalten. Sollte ich unseren Kunden fragen, welchen Alias ​​er beim Erstellen des Schlüssels verwendet hat? Und mit der Schlüsselfrage meinen Sie die Certificate Signing Request (CSR)? –

+0

Auch wenn ich verifiziere bekomme ich die folgende Ausgabe: 'Ihr Keystore enthält 1 Eintrag'. Wäre das korrekt? –

+0

Sie finden den Alias ​​mit dem Befehl keytool list 'keytool -list -keystore keystore.jks'. 'Ihr Keystore enthält 1 Eintrag 'ist in Ordnung. Der Alias ​​sollte in der nächsten Zeile gedruckt werden: ', 28.10.2013, PrivateKeyEntry,' – Jcs