java - keystore vs truststore
¿Por qué Java tiene los archivos cacerts y jssecacerts? (3)
Buena pregunta. Creo que surge del hecho histórico de que JSSE alguna vez fue un complemento. JSSE permite múltiples proveedores, por lo que jssecacerts
es solo para el proveedor de JSSE, y otros proveedores pueden usar el suyo.
Pero quién usó cacerts antes de JSSE es otra pregunta.
Estoy seriamente confundido sobre las diferencias entre los archivos cacerts
y jssecacerts
.
Sé que, de forma predeterminada, java busca el archivo jssecacerts
y luego el archivo cacerts
.
¿Pero cuál es el objetivo del archivo jssecacerts
?
Según tengo entendido, si se necesita utilizar un nuevo almacén de confianza, se debe hacer una copia de las cacerts
y cacerts
todas las nuevas CA confiables a esa copia. La propiedad del sistema -Djavax.net.ssl.trustStore
debe hacer referencia a la copia de las cacerts
(con las nuevas CA). De esta forma, otras aplicaciones Java que se ejecutan en esa máquina no confiarán accidentalmente en CA no predeterminadas.
Desde la Guía de referencia de Java ™ Secure Socket Extension (JSSE) , TrustManagerFactory
utiliza los siguientes pasos para tratar de encontrar material de confianza:
- propiedad del sistema
javax.net.ssl.trustStore
-
java-home/lib/security/jssecacerts
-
java-home/lib/security/cacerts
(enviado por defecto)
Creo que esto se basa en la convención sobre el concepto de configuración. Sin esfuerzo adicional de codificación, se cacert
. Para certificaciones CA / Firma extra privadas, un desarrollador puede usar la primera o la segunda forma, donde la primera puede contener un certificado particular pero luego contiene una lista de certs.
Según tengo entendido, el archivo cacerts
es el predeterminado.
Si hay un archivo jssecacerts
, se usa exclusivamente, no además del archivo cacerts
.
Mi recomendación: mantenga el archivo de cacerts
, copie a jssecacerts
y agregue jssecacerts
CA / firma privadas necesarias para el archivo jssecacerts
.