Aggiunta di nomi alternativi soggetto (SAN) a una richiesta di firma di certificato esistente (CSR)


9

Qualcuno può dirmi come aggiungere un numero di nomi alternativi soggetto a un CSR esistente?

Non sto parlando di generare un CSR con SAN o di aggiungere SAN al momento della firma - so come fare entrambe queste cose.

Contesto: il problema che abbiamo è che lo chassis blade HP consente di generare CSR, ma consente solo una SAN. Non è possibile utilizzare un CSR generato altrove in quanto non è stato possibile utilizzare il certificato risultante in quanto non è possibile (che è possibile trovare) caricare la chiave sullo chassis del blade.

Il processo standard della nostra CA non consente di aggiungere tempi di firma per SAN. Sono disposti a sperimentare, tuttavia sto cercando di trovare una soluzione alla nostra fine poiché ciò significa che non dovremo fare affidamento sul fatto che abbiano un processo non standard per noi - nella mia esperienza se devono usare un processo non standard la vita alla fine diventerà difficile. Ad esempio quando un membro del personale che conosce il processo non standard non è presente a causa di ferie ecc.

Il metodo attuale è quello di connettersi all'amministratore a bordo del bladechassis tramite la GUI Web e generare il CSR con un singolo CN.

La GUI Web consente solo una singola SAN nel CSR.

Quindi lo autofirmiamo con la seguente stanza nella configurazione di openssl:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Il certificato risultante ha le SAN extra.


Come stai generando i certificati sullo chassis blade attualmente? Quale metodo stai usando per connetterti ecc. Quale modello di telaio blade?
Eli,

Il telaio è un c7000. Sì, attualmente stiamo creando CSR sullo chassis e aggiungendo la SAN al momento del segno, ma questo è per certificati autofirmati.
Jason Tan,

Quale metodo stai usando per connetterti ad esso attualmente e qual è il tuo processo per generare certificati per esso?
Eli,

Ho modificato la domanda principale per includere il metodo corrente.
Jason Tan,

1
Puoi importare la chiave Cert e privata se la generi su un altro computer e la esporti?
Clint,

Risposte:


15

Se il tuo chassis non supporta l'aggiunta di SAN, dovrai togliere la chiave dallo chassis e generare il CSR con openssl.

Assicurati che req_extensions = v3_reqsia decommentato nella [ req ]sezione.

Aggiungi subjectAltNamealla [ v3_req ]sezione.

Genera un nuovo CSR.

openssl req -new -key extracted_c7000.key -out your_new.csr

Non è possibile modificare un CSR esistente.


Cosa ha detto cakemox. Se si potesse modificare un certificato (ovvero un CSR firmato) dopo che è stato firmato, si annullerebbe l'intero scopo delle autorità di certificazione.
MadHatter

Non voglio modificare il CSR dopo che è stato firmato - questo come direbbe sconfiggere la puprose. Voglio modificare il CSR dopo che è stato generato, ma PRIMA che sia firmato. È sicuramente possibile modificare parti di un CSR prima di firmare usando openssl.
Jason Tan,

Se potessi scaricare la chiave, lo farei. Mi dispiace non averlo menzionato nella domanda originale, ma non sono stato in grado di trovare per scaricare la chiave. Sarei altrettanto felice di pagare la taglia a qualcuno che potrebbe dirmi come scaricare la chiave.
Jason Tan,

Cordiali saluti - È sicuramente possibile modificare parti di un CSR prima di firmare usando openssl, in particolare l'opzione "openssl req -subj". Questo, tuttavia, per quanto ne so aggiungere l'estensione SAN v3, ti consentirà solo di specificare una nuova riga dell'oggetto tra cui CN aggiuntivi.
Jason Tan,

2
Il CSR è firmato dalla chiave privata della macchina, quindi non è possibile modificarlo dopo che è stato generato (altrimenti non sarebbe più possibile firmarlo). È possibile tuttavia che la CA modifichi i campi inseriti nel certificato pubblico; questo è l'unico modo per cambiare il campo SAN (su cui non hai alcun controllo se lo stai inviando a una CA pubblica).
Chris S,

0

Nota importante: tutto ciò è in qualche modo speculativo, quindi se sei nel profondo del codice e non è d'accordo con quello che sto dicendo, credi nel codice. Non sono un esperto di CA, ne gioco solo uno in TV. Detto ciò:

Come caratteristica dei CSR, sarà dura. Il passaggio finale nella generazione di un CSR a livello di codice è l'hash di tutto ciò che hai creato e quindi firmarlo con la chiave privata. Pertanto, sebbene sia possibile aggiungere tali attributi al testo del CSR, la firma non corrisponderebbe al contenuto, quindi nessuna CA lo firmerebbe.

Nel tuo caso, tuttavia, controlli (o sei almeno in contatto con) la CA. Questo ti dà due opzioni:

  1. È possibile indicare alla CA di ignorare allegramente la firma sul CSR e di emettere comunque un certificato.
  2. È possibile che la CA emetta un certificato diverso da quello richiesto (ad es. Aggiungendo attributi).

Di questi, il numero 1 sembra di gran lunga il più semplice. Dovrai rompere il sigillo anti-manomissione su OpenSSL per farlo, ma ha alcune funzioni che dovrebbero rendere un po 'più facile. Comincerei con asn1parse, che ti mostrerà come spezzare il CSR.


In ulteriori ricerche, l'opzione n. 2 è in realtà anche abbastanza semplice e realizzata da un numero di CA (ad esempio, per aggiungere site.comun www.site.comcertificato come SAN).
BMDan,

0

Mentre la risposta di cakemox è sicuramente la più semplice se riesci in qualche modo a ottenere una copia della chiave privata, c'è un altro modo se non riesci sostanzialmente firmando nuovamente il CSR usando un certificato "Enrollment Agent".

Questo post sul blog css-security.com contiene tutti i dettagli chiacchieroni . Ma la panoramica di alto livello del processo è simile alla seguente:

  • Ottieni un certificato dell'agente di iscrizione
  • Modifica un modello di certificato SSL per richiedere un certificato EA per l'emissione
  • Acquisire un CSR che necessita di informazioni SAN
  • Utilizzare il certificato EA per dimettersi dal CSR durante l'aggiunta delle informazioni SAN

Quando l'ho provato personalmente, sono abbastanza sicuro di aver saltato la parte sulla modifica del modello di certificato. Supponendo che tu possa generare un certificato dell'agente di iscrizione per te stesso, il processo effettivo è simile a questo.

Creare un san.inf con le informazioni sull'estensione SAN al suo interno

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Firma nuovamente la richiesta

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Invia la richiesta corretta

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

E quindi procedere normalmente con il processo di emissione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.