2011-10-18 11 views
24

Mam problem z LDAP. Mam przypadek testowy integracji, który, miejmy nadzieję, zadziała, ale obecnie ma problemy z bezpieczeństwem LDAPS z uzgadnianiem SSL.Jak zaimportować istniejący plik magazynu kluczy Java (.jks) do instalacji Java?

Mogę połączyć się z LDAPS za pomocą Apache Directory Studio i pobrać plik kluczy do pliku "permanent.jks".

To dobrze, ale chcę, aby mój test integracji, który znajduje się w środowisku Eclipse za pomocą środowiska JRE, umożliwił połączenie z serwerem LDAP przy użyciu tego magazynu kluczy.

Jak mogę pobrać ten plik kluczy i zaimportować go do środowiska JRE do własnego użytku?

Odpowiedz

34

Ok, więc tutaj był mój proces:

keytool -list -v -keystore permanent.jks - dostałem mi pseudonim.

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - Mam certyfikat do zaimportowania.

Wtedy mogę zaimportować go z keytool:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

Jak @Christian Bongiorno mówi alias nie może już istnieć w swojej kluczy.

+2

Mam to działa, ale z poprawką (jeśli chciałbyś zmienić odpowiedź). W procesie importowania część, w której masz "alias name" (BTW: nie jest to świetna nazwa zmiennej z spacją), musi to być alias, który nie istnieje jeszcze w magazynie docelowym. Jeśli nie określisz aliasu, domyślnie będzie to "1" - możesz użyć kroku 1, aby wyświetlić listę aliasów z miejsca docelowego przed instalacją. –

+2

W ostatnim kroku (importowanie) dostałem błąd 'keytool error: java.io. Wyjątek IOException: plik kluczy został zmieniony lub hasło było niepoprawne "mimo że poprzedni krok (eksportowanie), mogę z powodzeniem zakończyć moje hasło. Czy wiesz, dlaczego tak jest? –

+0

@ThaiTran Dla przyszłych czytelników podczas importowania certyfikatu należy użyć hasła pliku certyfikatu docelowego, a nie hasła użytego do utworzenia certyfikatu w pierwszej kolejności. Należy również zauważyć, że na wielu systemach JDK jest własnością root. W takim przypadku musisz wykonać polecenie keytool -import jako root. – BRasmussen

25

w celu załadowania magazynu kluczy, musisz podać typ magazynu kluczy (prawdopodobnie jkeks), podać strumień wejściowy i hasło. Następnie można załadować go tak:

KeyStore ks = KeyStore.getInstance(TYPE_OF_KEYSTORE); 
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD); 

może rzucać KeyStoreException, więc można otoczyć w bloku try, jeśli chcesz, lub ponownie rzut. Pamiętaj, magazyn kluczy może zawierać wiele kluczy, więc trzeba patrzeć klucz z aliasu, oto przykład z kluczem symetrycznym:

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD)); 
SecretKey someKey = entry.getSecretKey(); 
+0

Uratowałeś mi życie. Nie ładowałem magazynu kluczy prawidłowo, dopóki nie doszłam do twojego przykładu. Szkoda, że ​​nie mogę dać ci 10000 punktów za to. Dziękuję Ci bardzo!! – raspayu

+0

cieszę się, że mogę Ci pomóc! twoje podziękowania są warte więcej niż kilka punktów :). –

12

Można bulk import wszystkie pseudonimy z jednego magazynu kluczy do innego:

keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks 
+0

czy to polecenie może działać? – mike

+0

@mike co masz na myśli? – qwertzguy

+0

to działa i naprawdę dobrze: D – Aspekt

Powiązane problemy