java SSL i cert keystore

Skąd mój program java wie, gdzie znajduje się klucz zawierający certyfikat? Albo jak powiedzieć mojemu programowi java, gdzie szukać klucza?

Po pewnym określeniu keystore, jak określić certyfikat używany do uwierzytelniania serwera do klienta?

 122
Author: toomasr, 2011-05-03

5 answers

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);
 87
Author: DaveH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-03 14:46:41

Właściwości SSL są ustawiane na poziomie JVM za pomocą właściwości systemowych. Oznacza to, że możesz je ustawić podczas uruchamiania programu (java-D....) Lub można je ustawić w kodzie wykonując System.setProperty.

Konkretne klucze, które musisz ustawić, znajdują się poniżej:

Javax.net.ssl. keyStore - Lokalizacja plik keystore Java zawierający certyfikat własny procesu aplikacyjnego i klucz prywatny. Na Windows, the podana ścieżka musi używać forward ukośniki,/, w miejscu odwróconych ukośników.

Javax.net.ssl. keyStorePassword - hasło aby uzyskać dostęp do klucza prywatnego z plik keystore określony przez javax. net. ssl. keyStore. This password jest używany dwa razy: do odblokowania keystore pliku (hasło do przechowywania), a do odszyfrowania klucz prywatny przechowywany w keystore (hasło klucza).

Javax.net.ssl. trustStore - Lokalizacja plik keystore Java zawierający zbieranie certyfikatów CA przez ten wniosek proces (zaufanie sklep). W systemie Windows określone pathname musi używać ukośników do przodu, /, zamiast ukośników, \.

Jeśli lokalizacja sklepu zaufania nie jest określone za pomocą tej właściwości, Sunjsse i używa pliku keystore w następujące lokalizacje (w kolejności):

  1. $JAVA_HOME/lib/security/jssecacerts
  2. $JAVA_HOME/lib/security/cacerts

Javax.net.ssl. trustStorePassword - Hasło do odblokowania pliku keystore (hasło do sklepu) określone przez javax.net.ssl.trustStore.

Javax.net. ssl. trustStoreType - (opcjonalne) Dla formatu pliku Java keystore, to właściwość ma wartość jks (lub JKS). Zazwyczaj nie określa się tego właściwość, ponieważ jej domyślną wartością jest już jks.

Javax. net. debug - aby przełączyć przy logowaniu dla warstwy SSL / TLS, Ustaw ta właściwość do ssl.

 244
Author: Karthik Ramachandran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-19 22:54:14

Po pierwsze, Są dwa rodzaje kluczy.

Indywidualne i Ogólne

Aplikacja będzie używać tego wskazanego przy starcie lub domyślnym systemie.

Będzie to inny folder, jeśli JRE lub JDK jest uruchomiony, lub jeśli sprawdzisz osobisty lub "globalny".

Są też zaszyfrowane

W skrócie, ścieżka będzie taka:

$JAVA_HOME/lib/security/cacerts dla "ogólnego", który ma wszystkie CA dla władz i jest bardzo ważne.

 10
Author: Carlos Garcia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-10 01:31:48

Możesz również wspomnieć o ścieżce w czasie wykonywania za pomocą właściwości -D Jak poniżej

-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts 
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks

W mojej aplikacji apache spark udostępniałem ścieżkę Cert i keystore używając opcji --conf i extraJavaoptions w spark-submit jak poniżej

--conf 'spark.driver.extraJavaOptions= 
-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts 
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks' 
 5
Author: Balakumaran Muralidharan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 23:08:31

Tylko słowo ostrożności. Jeśli próbujesz otworzyć istniejący keystore JKS w Javie 9, musisz również wspomnieć o następujących właściwościach z wartością "JKS":

javax.net.ssl.keyStoreType
javax.net.ssl.trustStoreType

Powodem jest to, że domyślny typ magazynu keystore jest określony w Javie.plik bezpieczeństwa został zmieniony na pkcs12 z jks począwszy od Java 9.

 3
Author: Sankar Natarajan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 00:19:17