Per le chiavi ssh con firma CA, come vedere i vari attributi: principali, identità, numero di serie, opzioni, tempo di validità, ecc.

1

Sto cercando di implementare i controlli di accesso tramite le chiavi ssh pubbliche firmate da CA, come descritto nell'articolo Accesso scalabile e sicuro con SSH .

Sto cercando di capire come gestirà il nostro team di sicurezza sul lato CA. Una cosa che vorrei essere in grado di fare è, dopo aver firmato una chiave, vorrei "interrogare" quella chiave per ottenere informazioni a riguardo. In particolare, per una determinata chiave, mi piacerebbe sapere:

  • Con quale CA è stato firmato (ad esempio, posso estrarre alcune informazioni sul certificato utilizzato per firmare questa chiave)?
  • Quale identità è stata assegnata a questa chiave ( -I flag a ssh-keygen)
  • Quali sono le principali consentite da questa chiave ( -n ssh-keygen flag)
  • Qual è il tempo di validità della firma ( -V )
  • Qual è il numero di serie di questa firma ( -z )
  • Quali opzioni sono state assegnate a questa chiave firmata ( -O )

Chiaramente, sshd deve necessariamente decodificare tutti quegli attributi quando viene presentata la chiave. C'è un modo programmatico per estrarre tali informazioni? Sto pensando in termini di controlli di sanità, auditing e reporting sul lato gestione del team di sicurezza.

Modifica: mi sono reso conto che stavo usando una terminologia errata in questo post. Dalla pagina di manuale ssh-keygen (emphasis mine):

ssh-keygen supports signing of keys to produce certificates that may be used for user or host authentication. Certificates consist of a public key, some identity information, zero or more principal (user or host) names and a set of options...

Come Abraham menziona sotto, le chiavi sono in realtà solo le chiavi. Una volta che una chiave è stata firmata da una CA, non è più solo una chiave, ma un certificato .

Infine, in una straordinaria visualizzazione di Errore RTFM , ssh-keygen -L -f certificate fa esattamente ciò di cui ho bisogno.

    
posta Matt 07.06.2018 - 23:34
fonte

2 risposte

1

Le mie coorti di Gravitational hanno scritto un puro strumento golang che analizza i certificati SSH e li esegue online qui: link Se stanno chiedendo di analizzare i certificati SSH firmati. Credo che lo strumento produrrà tutti i dati disponibili all'interno del certificato.

    
risposta data 07.06.2018 - 23:42
fonte
0

Mentre puoi usare ssh-keygen -L -f <cert-file> nel caso in cui tu abbia un file di certificato reale sul tuo disco, è necessario quanto segue se hai caricato solo un certificato SSH temporaneo in ssh-agent e nessun file cert su disco:

ssh-add -l | ssh-keygen -L

BTW: la confusione con i termini "chiavi" e "certificati" è probabilmente dovuta al fatto che i certificati OpenSSH sono definiti come nuovi tipi di chiavi OpenSSH ([email protected] ecc.)

Vedi anche le specifiche: PROTOCOL.certkeys

    
risposta data 17.07.2018 - 12:39
fonte

Leggi altre domande sui tag