2011-05-03 50 views
110

¿Cómo sabe mi programa Java dónde está mi almacén de claves que contiene el certificado? O alternativamente, ¿cómo le digo a mi programa java dónde buscar el almacén de claves?java SSL y cert keystore

Después de especificar el almacén de claves de alguna manera, ¿cómo especificar el certificado que se utilizará para autenticar el servidor al cliente?

Respuesta

81
System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file); 
+12

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

+3

¿Alguien sabe cómo hacer referencia a esto en un cuadro de Windows? System.setProperty ("javax.net.ssl.trustStore", "C: \\ Archivos de programa (x86) \\ Java \\ jdk1.7.0_21 \\ jre \\ lib \\ security \\ cacerts"); no funciona para mí :( – simgineer

+1

¿ha intentado también escapar de los espacios? – DaveH

222

Las propiedades SSL se establecen en el nivel JVM a través de las propiedades del sistema. Lo que significa que puede establecerlos cuando ejecuta el programa (java -D ....) O puede establecerlos en el código haciendo System.setProperty.

Las teclas específicas que hay que establecer son a continuación:

javax.net.ssl.keyStore- Location of the Java keystore file containing an application process's own certificate and private key. On Windows, the specified pathname must use forward slashes, /, in place of backslashes.

javax.net.ssl.keyStorePassword - Password to access the private key from the keystore file specified by javax.net.ssl.keyStore. This password is used twice: To unlock the keystore file (store password), and To decrypt the private key stored in the keystore (key password).

javax.net.ssl.trustStore - Location of the Java keystore file containing the collection of CA certificates trusted by this application process (trust store). On Windows, the specified pathname must use forward slashes, / , in place of backslashes, \ .

If a trust store location is not specified using this property, the SunJSSE implementation searches for and uses a keystore file in the following locations (in order):

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

javax.net.ssl.trustStorePassword - Password to unlock the keystore file (store password) specified by javax.net.ssl.trustStore .

javax.net.ssl.trustStoreType - (Optional) For Java keystore file format, this property has the value jks (or JKS). You do not normally specify this property, because its default value is already jks.

javax.net.debug - To switch on logging for the SSL/TLS layer, set this property to ssl.

+13

Sería más apropiado enlazar al documento del que se cita. Supongo que es esto: http://fusesource.com/docs/broker/5.3/security/SSL-SysProps. html – Bruno

+3

El documento oficial debe ser la Guía de referencia de JSSE: http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html # Customization – aleung

+2

JDK7 http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSefGuide.html#Customization es más apropiado ahora. –

10

En primer lugar, hay dos tipos de almacenes de claves.

individual y general

La aplicación utilizará la indicada en el arranque o el valor por defecto del sistema.

Será una carpeta diferente si JRE o JDK se está ejecutando, o si marca el personal o el "global".

Ellos son encriptados demasiado

En resumen, el camino será como:

$JAVA_HOME/lib/security/cacerts para el "carácter general", que tiene toda la CA para las autoridades y es bastante importante.

3

también se puede hablar de la ruta en tiempo de ejecución utilizando -D propiedades .like continuación

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

en mi solicitud chispa Apache, que utilizan para proporcionar el camino de los CERT y almacén de claves con la opción --conf y extrajavaoptions en chispa presentar la siguiente

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

Cuestiones relacionadas