java SSL en cert keystore

Hoe weet mijn Java-programma waar mijn keystore met het certificaat zich bevindt? Of hoe vertel ik mijn Java-programma waar ik de keystore moet zoeken?

Hoe specificeert u, nadat u de keystore op de een of andere manier hebt opgegeven, het certificaat dat moet worden gebruikt voor de authenticatie van de server bij de client?


Antwoord 1, autoriteit 100%

System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);

Antwoord 2, autoriteit 98%

SSL-eigenschappen worden ingesteld op JVM-niveau via systeemeigenschappen. Dit betekent dat u ze ofwel kunt instellen wanneer u het programma uitvoert (java -D….) Of u kunt ze in code instellen door System.setProperty te doen.

De specifieke toetsen die u moet instellen staan hieronder:

javax.net.ssl.keyStore– Locatie van
het Java-sleutelarchiefbestand met daarin een
eigen certificaat van het aanvraagproces
en privésleutel. Op Windows, de
opgegeven padnaam moet forward gebruiken
slashes, /, in plaats van backslashes.

javax.net.ssl.keyStorePassword– Wachtwoord
om toegang te krijgen tot de privésleutel van de
keystore-bestand gespecificeerd door
javax.net.ssl.keyStore. Dit wachtwoord
wordt twee keer gebruikt: om de keystore te ontgrendelen
bestand (wachtwoord opslaan) en Om te decoderen
de persoonlijke sleutel die is opgeslagen in de keystore
(sleutelwachtwoord).

javax.net.ssl.trustStore– Locatie van
het Java-sleutelarchiefbestand met de
verzameling van CA-certificaten vertrouwd
door dit aanvraagproces (vertrouwen
winkel). Op Windows, de opgegeven
padnaam moet slashes gebruiken, /,
in plaats van backslashes, \.

Als een trust store-locatie niet is
gespecificeerd met behulp van deze eigenschap, de
SunJSSE-implementatie zoekt naar:
en gebruikt een keystore-bestand in de
volgende locaties (in volgorde):

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

javax.net.ssl.truststorepassword
Wachtwoord om het keystore-bestand te ontgrendelen
(Wachtwoord opslaan) opgegeven door
javax.net.ssl.trustStore.

javax.net.ssl.truststoretype – (optioneel)
Voor Java KeyStore-bestandsindeling, dit
Eigenschap heeft de waarde JKS (of JKS).
U geeft dit niet normaal gesproken op
eigendom, omdat de standaardwaarde is
al JKS.

javax.net.debug – om te schakelen
Bij het loggen voor de SSL / TLS-laag, ingesteld
deze eigenschap aan SSL.


Antwoord 3, Autoriteit 26%

Gewoon een woord van voorzichtigheid. Als u probeert een bestaande JKS-KeyStore in Java 9 te openen, moet u ervoor zorgen dat u de volgende eigenschappen ook met waarde als “JKS” vermeldt:

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

De reden is dat het standaard Keystore-type zoals voorgeschreven in Java.security-bestand is gewijzigd in PKCS12 van JKS van Java 9.


Antwoord 4, Autoriteit 8%

Allereerst zijn er twee soorten keystores.

individueel en algemeen

De applicatie gebruikt degene die is aangegeven in het opstarten of de standaardinstelling van het systeem.

Het is een andere map als JRE of JDK wordt uitgevoerd, of als u het persoonlijke of de “Global” één controleert.

ze zijn ook gecodeerd

Kortom, het pad zal zijn als:

$JAVA_HOME/lib/security/cacertsvoor de “algemene”, die alle CA voor de autoriteiten heeft en is vrij belangrijk.


Antwoord 5, Autoriteit 8%

u kunt ook het pad tijdens runtime vermelden met behulp van -Deigenschappen zoals hieronder

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

In mijn apache spark-toepassing gaf ik het pad van certificaten en keystore met behulp van de optie --confen extraJavaoptionsin spark-submit zoals hieronder

--conf 'spark.driver.extraJavaOptions= 
-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts 
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks' 

Other episodes