Ho letto il keystore Java di JKS, ma non ho trovato dettagli sul formato.
- La password del negozio serve solo a verificare l'integrità del file?
- In che modo le chiavi private sono protette?
Ho letto il keystore Java di JKS, ma non ho trovato dettagli sul formato.
details about [JKS] format.
Questo è implementato da sun.security.provider.JavaKeyStore
(fonte in mercurial)
ma è piuttosto semplice e basato sulle convenzioni Data{Output,Input}Stream
di Java:
Numero magico a 4 byte, numero di versione a 4 byte, conteggio a 4 byte delle voci; un numero variabile di voci ciascuna contenente 4 byte tipo, lunghezza + (modificato) nome UTF, timestamp a 8 byte, lunghezza + codifica + certcount per una chiave privata e tipo (in pratica sempre X.509
) + lunghezza + codifica per / ogni certificato; e alla fine hash della password più i dati precedenti per il controllo dell'integrità.
The store password is just to verify the integrity of the file?
Sì. L'API JCA e il formato JKS consentono a ciascuna chiave privata di essere crittografata con una password separata, che può essere diversa dalla password del negozio. keytool
, ad esempio, consente di specificare una password chiave, ma valori predefiniti è uguale alla password del negozio. Tuttavia, alcuni programmi non sono in grado di gestire password chiave e di archivio diverse; in particolare, quelli che utilizzano il trustmanager e / o il keymanager di default per SSL / TLS (e quindi HTTPS), quindi in questi casi deve essere utilizzata la stessa password sia per l'archivio che per le chiavi.
How does the private keys are protected?
Ogni privatekey è un hash PBE + che utilizza uno schema "proprietario" in sun.security.provider.KeyProtector
(fonte in mercurial) e formattato nel file come PKCS # 8 EncryptedPrivateKeyInfo
.
Leggi altre domande sui tag java public-key-infrastructure key-management