Perché "keytool.exe" con "-certreq" arg richiede un alias?

1

Sto usando l'utilità JDK "keytool.exe" per provare a creare una CSR (Certificate Signing Request) con l'argomento "-certreq". Stavo chiedendo perché questo richiede un alias (cioè di un altro cert nel keystore) quando non ho ancora ottenuto il certificato dalla CA (a cui manderei il CSR). Capisco che potrebbe essere usato per sposare il certificato firmato con una coppia di chiavi esistente / certificato autofirmato, ma quello che voglio fare è (creare un nuovo certificato):

  1. Genera un CSR da inviare a CA ("-certreq" arg).
  2. Al ricevimento del certificato firmato, gen una nuova coppia di chiavi ("-genkeypair arg)" w / nuovo alias .
  3. Importa il mio nuovo certificato contro quell'alias dal # 2.

La mia tesi è che non dovrei avere bisogno di una voce / alias keystore esistente per il passaggio 1. Ho davvero bisogno di un certificato fittizio autofirmato nel keystore 1? Thx!

    
posta user1172173 05.11.2018 - 17:25
fonte

2 risposte

1

Devi generare la coppia di chiavi prima che invia una richiesta di certificato, perché quella richiesta di certificato contiene la chiave pubblica ed è firmata con la chiave privata. Pertanto, non è possibile generare una nuova coppia di chiavi dopo la CSR poiché si otterrebbe una chiave pubblica diversa da quella nel certificato restituito e la chiave privata non corrisponderebbe quindi alla chiave pubblica nel certificato.

Il modo in cui Java gestisce le chiavi private è molto legato a TLS e X.509 / PKIX. Ciò significa che per l'esistenza di una chiave privata è necessario essere associato a una catena di certificati e un alias. Per questo motivo la chiave privata viene generata con un certificato autofirmato che contiene semplicemente le informazioni anche nel CSR. Solo recentemente Java sta adottando un modo più flessibile di gestire i keystore, ma è anche passato alle keystore PKCS # 12 per impostazione predefinita.

Il legame tra chiavi private e catene di certificati era una decisione progettuale per Java - non sono sicuro del perché , presumo che sia per semplificare le cose.

    
risposta data 07.11.2018 - 04:43
fonte
1

Un certificato per un CSR è la chiave pubblica di una coppia di chiavi più alcuni metadati. Chiedete in modo efficace a un membro dell'infrastruttura a chiave pubblica attendibile di "garantire" la vostra chiave pubblica come proveniente da voi. Una volta che i metadati sono stati convalidati dall'autorità, emetteranno un certificato con la chiave pubblica firmata dall'autorità.

Una volta ottenuto un certificato firmato, segui la documentazione Oracle per unirlo al tuo keystore con la tua coppia di chiavi esistente: link . Ciò sovrascriverà la chiave pubblica non firmata nello store con la versione firmata dall'autorità di certificazione emittente. (Grazie Maarten Bowedes )

L'autorità sta firmando la metà pubblica della coppia di chiavi originale come proveniente da te . Se generi una nuova coppia di chiavi e sovrascrivi il tuo alias, dovrai scrivere efficacemente sulla chiave privata associata al tuo certificato (ora valido).

    
risposta data 07.11.2018 - 00:06
fonte

Leggi altre domande sui tag