¿Cuál es el propósito / función del atributo "alias" en los archivos de almacén de claves de Java?

7

He escuchado información conflictiva sobre el propósito del atributo alias en los archivos de almacén de claves de Java. ¿Alguien puede aclarar qué es exactamente este atributo y qué debe configurarse para crear un nuevo almacén de claves Java para certificados de hoja e intermedios en una cadena de servidores web normal?

Solía pensar que alias era solo un identificador único para cada entrada en un archivo jks, y como tal, la hoja tendría un alias diferente de un certificado intermedio. Ahora, no estoy tan seguro. ¿Alguien puede aclarar?

    
pregunta Mike B 23.05.2016 - 07:16
fuente

4 respuestas

6

ALIAS

Para responder a su pregunta inmediata, el campo alias debe ser una cadena única para identificar la entrada clave. Esto se aplica a todos los tipos de confianza e intermedios.

Documentación

Keytool

  

Alias de KeyStore

     

Todas las entradas del almacén de claves (clave y certificado de confianza   entradas) se accede a través de alias únicos.

     

Se especifica un alias cuando agrega una entidad al almacén de claves utilizando el   -Genseckey comando para generar una clave secreta, -genkeypair comando para generar un par de claves (clave pública y privada) o el -importcert   comando para agregar un certificado o cadena de certificados a la lista de   certificados de confianza. Los siguientes comandos keytool deben usar este mismo   alias para referirse a la entidad.

     

Por ejemplo, supongamos que utiliza el alias duke para generar un nuevo   clave pública / privada y envuelva la clave pública en un autofirmado   Certificado (vea Cadenas de certificados) a través del siguiente comando:

     

keytool -genkeypair -alias duke -keypass dukekeypasswd

     

Esto especifica una contraseña inicial de "dukekeypasswd" requerida por los siguientes   comandos para acceder a la clave privada asociada con el alias duke. Si   luego desea cambiar la contraseña de la clave privada de duke, usa una   comando como el siguiente:

'keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass' 
     

Esto cambia la contraseña de "dukekeypasswd" a "newpass".

     

Tenga en cuenta: una contraseña no debe especificarse en la línea de comandos o   en una secuencia de comandos a menos que sea para fines de prueba, o que esté en un lugar seguro   sistema. Si no especifica una opción de contraseña requerida en un comando   línea, se le pedirá que lo haga

Normas y prácticas

No creo que haya ningún estándar de nomenclatura de conjuntos y estoy seguro de que puedes hablar con 10 personas diferentes y obtener 10 respuestas diferentes. Sólo lo quieres único y lógico.

La API y Keytool de Oracle no hacen un gran trabajo para verificar si hay duplicados, lo que es un descuido particular en mi opinión, considerando que se usa para identificar cada entrada en un almacén clave.

La mejor manera de resolver duplicados es generar un nuevo almacén de claves y agregar cada entrada del antiguo almacén de claves a la nueva con un alias único. Puede iterar sobre el almacén de claves y usar su marca de tiempo para identificar diferentes certificados en una tienda.

    
respondido por el Shane Andrie 27.06.2017 - 16:38
fuente
1

Su pregunta no es muy clara, pero responde a una posibilidad:

El KeyStore API y el formato JKS en concreto tiene dos tipos de entradas relevantes para SSL / TLS: la entrada privateKey para un servidor contiene la clave privada y la cadena de certificados (hoja y intermedio (s) y generalmente raíz) todos bajo un alias; Las entradas de trustedCert (si las hay) contienen certificados para otras partes, generalmente CA, cada una con un alias diferente

Los diferentes certificados en la cadena de una entrada privateKey se obtienen mediante programación keystore.getCertificateChain(alias)[0] = hoja, [1] = primer intermedio, etc.

    
respondido por el dave_thompson_085 24.05.2016 - 02:22
fuente
1

Tuve exactamente la misma pregunta, y usted expresó el problema de manera perfectamente clara. Mi comprensión después de la experimentación (lamentable que la documentación no lo indique con claridad) es:

  1. Los alias no son identificadores de un solo objeto; puede utilizar el alias same para una clave y una entrada cert en un almacén de claves, sin que una borre la otra.

  2. De hecho, debe usar el mismo alias para una clave y su certificado asociado, para vincularlos. Otros certificados en la cadena deben tener alias diferentes, con nombres razonables de su elección para identificarlos.

No soy un experto en esto, así que tome mi respuesta con el grano de sal correcto, por favor.

    
respondido por el Clint Staley 27.06.2017 - 01:32
fuente
1

en un almacén de claves / almacén de confianza puede tener más claves / certificados y cada clave tiene un alias. Si tiene que configurar el SSL en un servidor, normalmente configura el almacén de claves, la contraseña del almacén de claves, la contraseña de la clave y el alias. Básicamente, con el alias al que se refiere, qué clave pretende utilizar.

Ejemplo con jboss wildfly 8

<security-realm name="SSLClientCertRealm">    
    <server-identities>
        <ssl>
            <keystore path="server-ssl.keystore" relative-to="jboss.server.config.dir" keystore-password="keystore" alias="alias_name" key-password="keystore"/>
        </ssl>
    </server-identities>
    
respondido por el rkn 23.05.2016 - 20:33
fuente

Lea otras preguntas en las etiquetas