2013-06-13 42 views
8

Mam publiczny certyfikat wydany przez urząd certyfikacji. Chcę utworzyć połączenie SSL Java za pomocą tego certyfikatu. Podałem How can I use different certificates on specific connections? i Java SSL connection with self-signed certificate without copying complete keystore to client. Z tego rozumiem, że muszę zaimportować certyfikat do magazynu kluczy. Jednak nie otrzymałem żadnego pliku kluczy z urzędu certyfikacji. Stworzyłem magazyn kluczy i próbowałem zaimportować do niego certyfikat publiczny. Ale wtedy pojawia się następujący błąd:Błąd podczas importowania certyfikatu publicznego do magazynu kluczy

błąd keytool: java.lang.Exception: Klucze publiczne w odpowiedzi i kluczy nie pasuje

Czy potrzebuję kluczy z CA lub robię coś źle?


poleceń używany do tworzenia kluczy:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 

poleceń używany do importowania cert:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks 
+0

Czy możesz być bardziej konkretny? Którego polecenia używasz do tworzenia magazynu kluczy i jak importujesz certyfikat? –

+0

poleceń do tworzenia kluczy: keytool -genkey -alias kocur -keyalg RSA -keystore keystore.jks polecenie, aby zaimportować cert: keytool -Import -v -alias kocur -file zarejestrowany cert.pem -keystore kluczy. jks – DanMatlin

+0

@Zeutheus czy znalazłeś sposób, żeby to zadziałało? Mam do czynienia z podobnym problemem i pomoc dla powyższego problemu. – themanwhosoldtheworld

Odpowiedz

5

myślę, że nie są odpowiednio następujące świadectwo internetową logowania procesu. Kasy tę dyskusję https://forums.oracle.com/thread/1533940 wdrożyć je prawidłowo, wykonując poniższe czynności:

  1. tworzenia kluczy keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (ten generuje kluczy oraz klucza (DC) z pseudonimem „MyKey”)

  2. tworzyć Żądanie podpisania certyfikatu (CSR). keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (ten generuje plik CSR tekst)

  3. podpisał cert wygenerowany: http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. Sprowadzone podpisany certyfikat (uważaj na CRLFs czy wklejanie podpisał cert od kroku 3) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (ważne że jest to alias inny niż w kroku 1 (domyślnie "mykey")?

  5. Eksportuj klucz publiczny do użytku klienta keytool -export -alias mykey -file test.publickey -keystore test.keystore

W systemie Server

  1. tworzenia magazynu zaufanych certyfikatów keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (ten generuje kluczy oraz klucza (DC) z pseudonimem "MyKey")

  2. importu klucza publicznego - do testowania serwisu SOAP SSL za pomocą klienta keytool -import -file test.publickey -keystore test.truststore

Problem polegał na tym, że alias w krokach 1 i 6 był domyślnie "mykey". Kiedy zmienił się krok 6: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

można importować za pomocą kroku 7 powyżej (choć nie dodać „-alias apublickey” w punkcie 7). To zadziałało dla mnie.

3

Można użyć narzędzia GUI keyStore explorer do wygenerowania magazynu kluczy/certyfikatu oraz do zaimportowania/eksportowania certyfikatu do magazynu kluczy.

0

Napotkałem ten sam problem podczas importowania certyfikatu SSL do magazynu kluczy. W moim przypadku brak certyfikatu głównego urzędu certyfikacji w łańcuchu. Wyeksportowałem certyfikat główny w pliku i ręcznie zaimportowałem go do magazynu kluczy.