Jaka jest różnica między cacerts a keystore?

112

Jaka jest różnica między nimi, cacerts i keystore?

Jeśli użyję definicji znajdującej się w tych linkach, plikach cookie i magazynie kluczy , wydaje się, że są to zbiór certyfikatów, ale w kontekście systemu rozproszonego (Java). Który z nich jest używany do uwierzytelniania podczas połączenia SSL? Oboje czy tylko jeden z nich czy na zmianę?

dimas
źródło
3
cacerts = certyfikaty urzędów certyfikacji ?
Peter Mortensen

Odpowiedzi:

139

„cacerts” to truststore. Magazyn zaufanych certyfikatów służy do uwierzytelniania równorzędnych. Magazyn kluczy służy do uwierzytelniania użytkownika.

Markiz Lorne
źródło
Cześć EJP dzięki za odpowiedzi, zacytowałem to zanim przeczytałem którekolwiek z twoich odpowiedzi;) Więc tylko wyjaśnienie, jeśli podsumuję twoje odpowiedzi w Francis i Pangea. Cacerts służy do uwierzytelniania klientów żądających dostępu lub połączenia, aw przypadku magazynu kluczy nie rozumiem, dlaczego chcesz się uwierzytelniać. :)
dimas
20
Przeczytaj jeszcze raz, co napisałem. (1) Magazyn zaufanych certyfikatów jest używany do uwierzytelniania rówieśników. Jeśli jesteś klientem, serwer jest równorzędnym; jeśli jesteś serwerem, odwrotnie. (2) Jeśli masz serwer, lub jeśli klient i serwer uwierzytelniania żądań klienta, trzeba uwierzytelnić się do uczestnika, więc trzeba własny certyfikat i klucz prywatny, które są w magazynie kluczy. (Co dziwne, ten sam format pliku jest używany do obu i nazywa się to plikiem kluczy).
Markiz Lorne,
OK, rozumiem, ale tylko kolejne pytanie. Moje cacerts zawiera wszystkie certyfikaty przechowywane w magazynie kluczy i nie tylko. Chociaż niektóre certyfikaty, w tym certyfikat prywatny mojej aplikacji, mają różne aliasy, ale mają te same podpisy cyfrowe. Więc idealnie mogę używać moich cacerts, jeśli połączę się z serwerem i zażądam uwierzytelnienia?
dimas
Nie rozumiem części dotyczącej „różnych aliasów”. Różni się od czego? Na Twoje ostatnie pytanie można odpowiedzieć eksperymentalnie.
Markiz Lorne
3
@ raja777m cacertsto osoba, której ufasz. Nie widzę powodu, dla którego miałby się zmieniać między środowiskami, chyba że popełnisz błąd polegający na używaniu certyfikatów z podpisem własnym dla serwerów testowych: błąd, ponieważ oznacza to, że używasz różnych ścieżek kodu w testach i na produkcji.
Markiz Lorne
41

cacerts to miejsce, w którym Java przechowuje publiczne certyfikaty głównych urzędów certyfikacji. Java używa cacerts do uwierzytelniania serwerów.

Magazyn kluczy to miejsce, w którym Java przechowuje klucze prywatne klientów, aby móc je udostępniać serwerowi, gdy serwer żąda uwierzytelnienia klienta.

Aravind Yarram
źródło
@dimas Najwyraźniej, ale tak naprawdę ma na myśli „prośby”.
Markiz Lorne
1
@ user207421 Wierzę, że w tej odpowiedzi aplikacja Java odgrywa rolę klienta http, a adres URL http, który wywołuje nasza aplikacja Java, jest aplikacją serwera. Tak więc KeyStore naszej aplikacji klienckiej Java powinien mieć zarówno klucz prywatny + certyfikat (podpisany klucz publiczny), jak i wysyłać tylko certyfikat do aplikacji serwera, prawda? A jeśli aplikacja serwera jest również aplikacją Java, weryfikuje certyfikat wysłany przez naszą aplikację kliencką Java, używając własnego pliku cacert, prawda?
user104309
0

Cacerts to szczegóły zaufanych organów podpisujących, które mogą wystawiać certyfikaty. To właśnie ma większość przeglądarek, dzięki którym certyfikaty zostały określone jako autentyczne. Keystone ma certyfikaty związane z usługami do uwierzytelniania klientów.

Szczęka
źródło
-2

Sprawdź swoją ścieżkę JAVA_HOME. Ponieważ system szuka pliku java.policy, który znajduje się w JAVA_HOME/jre/lib/security. Twój JAVA_HOME powinien zawsze być ../JAVA/JDK.

naveen verma
źródło
3
dzięki za wysiłek, ale powinieneś przeczytać i zrozumieć odpowiedź EJP.
dimas