Skąd mój program java wie, gdzie jest mój magazyn kluczy zawierający certyfikat? Lub alternatywnie, jak wskazać programowi Java, gdzie ma szukać magazynu kluczy?
Po określeniu w jakiś sposób magazynu kluczy, jak określić certyfikat, który będzie używany do uwierzytelniania serwera na kliencie?
Odpowiedzi:
źródło
Właściwości SSL są ustawiane na poziomie maszyny JVM za pośrednictwem właściwości systemowych. Oznacza to, że możesz je ustawić podczas uruchamiania programu (java -D ....) lub możesz ustawić je w kodzie, wykonując System.setProperty.
Konkretne klucze, które musisz ustawić, znajdują się poniżej:
źródło
Tylko słowo ostrzeżenia. Jeśli próbujesz otworzyć istniejący magazyn kluczy JKS w Javie 9 i nowszych, musisz wspomnieć również o następujących właściwościach z wartością „JKS”:
Powodem jest to, że domyślny typ magazynu kluczy określony w pliku java.security został zmieniony na pkcs12 z jks od wersji Java 9.
źródło
Przede wszystkim istnieją dwa rodzaje magazynów kluczy.
Indywidualne i ogólne
Aplikacja użyje tego wskazanego podczas uruchamiania lub domyślnego systemu.
Będzie to inny folder, jeśli uruchomione jest środowisko JRE lub JDK lub jeśli zaznaczysz folder osobisty lub „globalny”.
Są też zaszyfrowane
Krótko mówiąc, ścieżka będzie wyglądać następująco:
$JAVA_HOME/lib/security/cacerts
dla „ogólnego”, który ma wszystkie CA dla organów i jest dość ważny.źródło
możesz również wspomnieć o ścieżce w czasie wykonywania, używając
-D
właściwości jak poniżejW mojej aplikacji Apache Spark udostępniłem ścieżkę certyfikatów i magazynu kluczy za pomocą
--conf
opcji orazextraJavaoptions
w funkcji przesyłania iskier, jak poniżejźródło