in

java – ¿Qué es el almacén de claves?

apple touch icon@2

Almacén de claves en Java puede referirse a tres cosas, dependiendo del contexto. (Todos están estrechamente relacionados pero son sutilmente diferentes).

  • Un almacén de claves puede ser un repositorio donde se pueden almacenar claves privadas, certificados y claves simétricas. Por lo general, se trata de un archivo, pero el almacenamiento también se puede manejar de diferentes maneras (por ejemplo, token criptográfico o utilizando el propio mecanismo del sistema operativo).

  • KeyStore también es una clase que forma parte de la API estándar. Es esencialmente una forma de cargar, guardar e interactuar en general con uno de los almacenes de claves «físicos» como se describe anteriormente. A KeyStore también puede estar puramente en la memoria, si solo necesita la abstracción de API para su aplicación.

    Cómo cargar y manipular un KeyStore instancia depende del formato del archivo de almacén de claves (u otro sistema de almacenamiento) que lo respalda. Hay varios formatos disponibles. Algunos de los más comunes son JKS y PKCS # 12 (.p12).

  • «keystore» también se puede utilizar como contraparte de «truststore». Aquí es donde puede resultar confuso, ya que tanto el «almacén de claves» como el «almacén de confianza» son almacenes de claves, simplemente se utilizan para diferentes propósitos. Puede encontrar más detalles en esta respuesta. El almacén de claves se usa para inicializar el administrador de claves, mientras que el almacén de confianza se usa para inicializar el administrador de confianza. Desde el Guía de referencia de JSSE:

    • A TrustManager determina si las credenciales de autenticación remota (y por lo tanto la conexión) deben ser confiables.

    • A KeyManager determina qué credenciales de autenticación enviar al host remoto.

    Básicamente, un almacén de claves utilizado como almacén de confianza contendrá una serie de certificados (CA) en los que está dispuesto a confiar: esos son los anclajes de confianza que utilizará para verificar certificados remotos que aún no conoce y en los que no confía. Por el contrario, un almacén de claves utilizado como almacén de claves contendrá su propio certificado y su clave privada: esto es lo que utilizará para autenticarse en una parte remota (cuando sea necesario).

    Hay un almacén de confianza predeterminado incluido con JRE (/lib/security/cacerts). No hay un almacén de claves predeterminado, ya que generalmente es un paso más explícito para el usuario.

En el contexto de SSL / TLS, un almacén de claves (almacén de claves utilizado como almacén de claves) será el lugar donde un servidor almacena su certificado y clave privada (o, cuando se utiliza la autenticación de certificado de cliente, donde el cliente almacena su certificado y clave privada). Un almacén de confianza (almacén de claves utilizado como almacén de confianza) será el lugar donde el cliente almacene los certificados de CA de las CA en las que está dispuesto a confiar, para poder verificar el certificado del servidor al realizar una conexión a un servidor SSL / TLS (de manera similar, en el lado del servidor, aquí también es donde se almacenan los certificados de CA utilizados para verificar los certificados de cliente).

Normalmente, el error que recibe («ValidatorException: PKIX path building failed«) ocurre cuando el certificado del servidor al que te estás conectando no se puede verificar con ningún certificado en el almacén de confianza que estás usando. Por lo general, deberías tener en tu almacén de confianza el certificado del servidor directamente en tu almacén de confianza (que solo se puede administrar a pequeña escala) o el certificado CA de la CA utilizado para emitir ese certificado de servidor (o uno de los certificados de la cadena que presenta, cuando hay una cadena).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

R – Sintaxis básica

gfg 200x200 min

Convierta la lista de Python en matrices numpy