2010-11-04 13 views
33

Piszę aplikację korzystającą z protokołu SSL. Dlatego mam manekina magazynu kluczy i manekina zaufania, które chcę dostarczyć do mojego klienta. Czy istnieje folder domyślny, aby umieścić je w mojej dystrybucji? np. docs, lib, bin ... itd. Gdzie zazwyczaj znajduje się magazyn kluczy na serwerze i gdzie zazwyczaj znajduje się magazyn zaufanych klientów?Która domyślna lokalizacja magazynu kluczy/magazynu zaufanych aplikacji Java?

Dzięki

Odpowiedz

28

W Javie, zgodnie z JSSE Reference Guide, nie ma domyślnego dla keystore, domyślny dla truststore jest "jssecacerts, jeśli istnieje. W przeciwnym razie, cacerts".

Niektóre aplikacje używają ~/.keystore jako domyślnego magazynu kluczy, ale nie jest to bezproblemowe (głównie dlatego, że użytkownik może nie chcieć, aby cała aplikacja uruchamiana przez użytkownika korzystała z tego magazynu zaufanych certyfikatów).

Proponuję, aby zamiast tego używać wartości specyficznych dla aplikacji, które są w pakiecie z aplikacją, ogólnie rzecz biorąc byłoby bardziej odpowiednie.

+1

Magazyn kluczy i magazyn zaufany to ogólna terminologia PKI i nie jest specyficzna dla języka Java. – user93353

+0

@ user93353, różni się w zależności od implementacji. PKI mówi o zaufaniu na różne sposoby, ale może to być "magazyn zaufania", "kotwice zaufania" lub po prostu "zaufane certyfikaty". W systemie Windows/schannel dostaniesz także magazyn "Zaufane główne urzędy certyfikacji" i tak dalej. AFAIK, nie ma jednolitej terminologii. – Bruno

+20

Dokładniej, domyślne lokalizacje to /lib/security/jssecacerts i /lib/security/cacerts, a Ty nadpisujesz je właściwością systemową javax.net.ssl.trustStore. – Eric

14

Tak jak powiedział Bruno, lepiej skonfigurować go samemu. Oto, jak to robię. Rozpocznij od utworzenia pliku właściwości (/etc/myapp/config.properties).

javax.net.ssl.keyStore = /etc/myapp/keyStore 
javax.net.ssl.keyStorePassword = 123456 

Następnie załaduj właściwości do swojego środowiska z kodu. To sprawia, że ​​twoja aplikacja jest konfigurowalna.

FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties"); 
Properties p = new Properties(System.getProperties()); 
p.load(propFile); 
System.setProperties(p); 
+0

HI Kristian Benoit - Twoja odpowiedź wydaje się być logiczna - możesz wyjaśnić szczegóły swojej odpowiedzi - lub odnieść link do bloga ... aby uzyskać pełny samouczek. Sry Jestem trochę nowy w magazynie kluczy, doceniłbym twoje wysiłki –

Powiązane problemy