Non intendo semplicemente mettere la chiave RSA pubblica di un certificato x.509 in ~/.ssh/authorized_keys
- Sto cercando un modo per impostare un ssh in modo tale che i certificati x.509 firmati da una CA predefinita viene automaticamente concesso l'accesso all'account utente collegato. RFC 6187 sembra suggerire tale funzionalità, ma non riesco a trovare alcuna documentazione su questo, o se è implementata in OpenSSH a tutti.
Ecco una descrizione più elaborata di ciò che voglio fare:
- Una CA ("SSH-CA") è impostata
- Questa CA viene utilizzata per firmare i certificati utente con
keyUsage=digitalSignature
(e forse il campoid-kp-secureShellClient
extendedKeyUsage) - Questo certificato può ora essere utilizzato per accedere su un server. Il server non richiede che la chiave pubblica sia presente in
authorized_keys
. Invece, è impostato per affidarsi alla SSH-CA per verificare la chiave pubblica e la firma del certificato (o catena di certificati) e il nome utente / UID (probabilmente direttamente nel camposubjectAltName
, o magari usando qualche mappatura sul lato server ) prima che venga eseguita la normale autenticazione RSA
Quindi, (come) questo può essere ottenuto con OpenSSH, e se richiede una patch, come possono essere minimizzate le modifiche sul lato client?
In alternativa suppongo che si possa usare anche qualsiasi certificato S / MIME più un nome utente per mappare l'indirizzo e-mail, senza richiedere una propria CA. Il client potrebbe anche utilizzare ancora solo la chiave RSA privata e viene utilizzato un server di certificazione ottenere un certificato da una chiave pubblica, offrendo inoltre la possibilità di utilizzare anche i certificati PGP (ad esempio tramite monkeysphere ) senza che l'utente abbia bisogno di alcuna conoscenza su tutto questo purché fornisca semplicemente una chiave pubblica.
Se non è nativamente possibile, immagino che potrei arrivare a una "implementazione" semi-automatica lasciando che uno script sul server controlli automaticamente un certificato inviato in qualche modo tramite openssl
(o gnupg
) e inserire la chiave pubblica nel file authorized_keys
del rispettivo utente - sebbene a quel punto io am probabilmente più o meno rifai il progetto monkeyshere ...