Qual è lo scopo / ruolo dell'attributo "alias" nei file di keystore Java?

7

Ho ascoltato informazioni contrastanti sullo scopo dell'attributo alias nei file di keystore Java. Qualcuno può chiarire cosa è esattamente questo attributo e cosa dovrebbe essere impostato quando si crea un nuovo keystore java per i certificati foglia e intermedio in una normale catena di server Web?

Ero solito pensare che alias fosse solo un identificatore univoco per ogni voce in un file jks, e come tale la foglia avrebbe un alias diverso da un cert intermedio. Ora, non ne sono così sicuro. Qualcuno può chiarire?

    
posta Mike B 23.05.2016 - 07:16
fonte

4 risposte

6

ALIAS

Per rispondere a una domanda immediata, il campo alias dovrebbe essere una stringa univoca per identificare la voce della chiave. Questo si applica a tutti i tipi di fiducia e intermedi.

Documentazione

Keytool

KeyStore Aliases

All keystore entries (key and trusted certificate entries) are accessed via unique aliases.

An alias is specified when you add an entity to the keystore using the -genseckey command to generate a secret key, -genkeypair command to generate a key pair (public and private key) or the -importcert command to add a certificate or certificate chain to the list of trusted certificates. Subsequent keytool commands must use this same alias to refer to the entity.

For example, suppose you use the alias duke to generate a new public/private key pair and wrap the public key into a self-signed certificate (see Certificate Chains) via the following command:

keytool -genkeypair -alias duke -keypass dukekeypasswd

This specifies an inital password of "dukekeypasswd" required by subsequent commands to access the private key assocated with the alias duke. If you later want to change duke's private key password, you use a command like the following:

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

This changes the password from "dukekeypasswd" to "newpass".

Please note: A password should not actually be specified on a command line or in a script unless it is for testing purposes, or you are on a secure system. If you don't specify a required password option on a command line, you will be prompted for it

Standard e pratiche

Non penso che ci sia uno standard di denominazione e sono sicuro che puoi parlare con 10 persone diverse e ottenere 10 risposte diverse. Lo vuoi solo unico e logico.

L'API e il Keytool di Oracle non svolgono un ottimo lavoro nel controllo dei duplicati, il che è un particolare controllo a mio parere, considerato che è utilizzato per identificare ogni voce in un keystore.

Il modo migliore per risolvere i duplicati è generare un nuovo keystore e aggiungere ogni voce dal vecchio keystore al nuovo con alias univoco '. È possibile scorrere il keystore e utilizzare il timestamp per identificare diversi certificati in un negozio.

    
risposta data 27.06.2017 - 16:38
fonte
1

La tua domanda non è molto chiara, ma risponde a una possibilità:

La KeyStore API in modo astratto e il formato JKS concretamente ha due tipi di voci rilevanti per SSL / TLS: la voce privateKey per un server contiene la chiave privata e la catena cert (foglia e intermedio (i) e solitamente root) tutti sotto un alias; Le voci trustedCert (se presenti) contengono certificati per altre parti, solitamente CA, ciascuna con un alias diverso

A livello di programmazione i diversi certificati nella catena di una voce privateKey sono ottenuti da keystore.getCertificateChain(alias)[0] = foglia, [1] = primo intermedio, ecc.

    
risposta data 24.05.2016 - 02:22
fonte
1

Ho avuto esattamente la stessa domanda e tu hai espresso il problema in modo perfettamente chiaro. La mia comprensione dopo la sperimentazione (deplorevole che la documentazione non lo dichiari chiaramente) è:

  1. Gli alias non sono identificativi di singoli oggetti; puoi usare lo stesso alias di una chiave e una voce cert in un keystore, senza cancellare l'altro.

  2. In effetti, devi usare lo stesso alias di una chiave e il relativo certificato, per legarli insieme. Altri certificati nella catena dovrebbero avere diversi alias, con nomi ragionevoli di tua scelta per identificarli.

Non sono un esperto in questo, quindi prendi la mia risposta con il giusto grano di sale, pls.

    
risposta data 27.06.2017 - 01:32
fonte
1

in un keystore / truststore puoi avere più chiavi / certificati e ogni chiave ha un alias. Se è necessario configurare SSL in un server, in genere si configurano il keystore, la password del keystore, la password della chiave e l'alias. In sostanza con l'alias si indica quale chiave si intende utilizzare.

Esempio 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>
    
risposta data 23.05.2016 - 20:33
fonte

Leggi altre domande sui tag