Anche se questa è una cosa insolita da fare, la linea di comando OpenSSL, che include molte funzionalità rivolte principalmente ai problemi di debug, può farlo. Usa openssl x509
( senza -req
) con -CA certfile -CAkey keyfile
o solo -CA file
se hai sia cert che privatekey in un file (che PEM può fare). Aggiungi -digestname
, ad es. -sha256
se diverso da quello predefinito (SHA1).
Puoi specificare il nuovo serial esplicitamente con -set_serial
, o usare quasi lo stesso schema di file seriale di openssl ca
per default o esplicitamente; vedi man [1ssl?] x509
sul tuo sistema (a meno che non sia Windows) o sul web alla voce 'Opzioni di firma' a circa 1/3 della via verso il basso. (La differenza è che ca
usa il valore esadecimale dal file dopo incremento, ma x509 [-req] -CA*
lo usa prima . Il mapping seriale / cert NON è registrato in un file "database", come ca
.) È possibile specificare la durata del periodo di validità, ma non specificare i tempi di inizio e fine arbitrari come ca
possibile.
Sostituisce il nome dell'emittente, seriale, periodo di validità e firma, nel nuovo certificato (di uscita), ma non cambia nessuna delle estensioni, che per il tuo caso sembra corretta. Se il certificato di input contiene l'estensione AuthorityKeyIdentifier (AKI) per identificare il suo certificato padre / 'firma', quell'estensione nel certificato di output non identificherà correttamente il suo genitore che potrebbe causare problemi nell'utilizzo del certificato. Puoi sostituire le estensioni aggiungendo -clrext -extfile filename -extensions section
, ma devi fare tutti di esse, il che potrebbe essere scomodo.
Se si utilizza il processo in due passaggi di x509 -x509toreq
per creare un CSR e quindi x509 -req -CA*
o ca
per emettere un certificato da quel CSR, questo elimina tutte le estensioni dal certificato di input. Se vuoi delle estensioni devi aggiungerle di nuovo: per x509 -req -CA*
questo deve essere esplicito sulla riga di comando; per ca
può essere configurato nel file di configurazione o sovrascritto sulla riga di comando.
ObRant: l'emissione di un certificato è spesso descritta come "firma del CSR / richiesta". Non è. Il corpo del certificato, alias certTBS (TBS = to-be-signed), si basa normalmente parzialmente su parte del CSR, ma la maggior parte del corpo del certificato è diversa dalla CSR.