2012-03-27 6 views
24

Próbuję zaktualizować certyfikat SSL zgodnie z this post .Błąd Importowanie certyfikatu SSL: Brak certyfikatu X.509

Jestem noobem w certyfikatach, więc poszedłem za this guide. Ale gdy wchodzę

keytool -keystore mycacerts -storepass changeit -importcert -file "C:\Users\Noks\Desktop\cacerts.pem" -v 

pojawia się błąd:

keytool error: java.lang.Exception: Input not an X.509 certificate 
java.lang.Exception: Input not an X.509 certificate 
     at sun.security.tools.KeyTool.addTrustedCert(KeyTool.java:1913) 
     at sun.security.tools.KeyTool.doCommands(KeyTool.java:818) 
     at sun.security.tools.KeyTool.run(KeyTool.java:172) 
     at sun.security.tools.KeyTool.main(KeyTool.java:166) 

Jak to naprawić?

+0

Myślę, że polecenie działa absolutnie dobrze w java 1.6 lub powyżej –

Odpowiedz

24

Czy plik cacerts.pem zawiera pojedynczy certyfikat? Ponieważ jest to PEM, spojrzeć na niego, powinien zacząć

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

i kończą

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

Wreszcie, aby sprawdzić, że nie jest uszkodzony, zdobyć OpenSSL i wydrukować swoje dane za pomocą

openssl x509 -in cacerts.pem -text

+0

Cóż, miało wiele takich jednostek, po prostu zmodyfikowałem je, aby je zawierały. Zostało pomyślnie zainstalowane. :) – nikel

+0

Czy właśnie dodałeś BEGIN CERTYFIKAT i KONIEC CERTYFIKAT pomiędzy wszystkimi danymi? Mam również ten sam problem, czy możesz mi pomóc, mówiąc, co zrobiłeś? –

+1

Linie powinny już tam być. Jeśli tak nie jest, Twój certyfikat jest prawdopodobnie zakodowany w DER (lub nieprawidłowy). Aby to zrobić, wykonaj 'openssl x509 -w mycert.der -inform DER -out myCert.pem -outform PEM'. Aby wyświetlić i zweryfikować go 'openssl -in myCert.pem -text'. Plik musi zawierać pojedynczy certyfikat. –

25

Wiele urzędów zapewni cert i n Format PKCS7.

Według Oracle documentation The commmand keytool poradzi PKCS # 7, ale czasami to nie

The keytool command can import X.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type. The data to be imported must be provided either in binary encoding format or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard. In the latter case, the encoding must be bounded at the beginning by a string that starts with -----BEGIN, and bounded at the end by a string that starts with -----END.

Jeśli plik PKCS7 nie mogą być importowane okazję do przekształcenia go z PKCS7 do X.509:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 
3

To wydaje się być starym wątkiem, ale dodam tutaj moje doświadczenie. Próbowałem zainstalować również certyfikat i otrzymałem ten błąd. Następnie otworzyłem plik cer z edytorem txt i zauważyłem, że na końcu każdej linii jest dodatkowy znak (znak). Usunięcie tych linii pozwoliło mi zaimportować certyfikat.

Mam nadzieję, że to jest coś warte dla kogoś innego.

+0

To był również problem dla mnie, ponieważ skopiowałem tekst certyfikatu bezpośrednio z wiadomości e-mail od dostawcy certyfikatu, pozostawiając miejsce na końcu każdej linii. – Continuity8