Come posso usare la stessa chiave per SSH e SSL (https)


12

Sto cercando di installare gli strumenti di sviluppo per un piccolo team e non riesco a ottenere l'autenticazione corretta.

Poiché siamo un team distribuito, il server è su Internet. E mi piacerebbe avere SSO + zero configurazione client.

Quindi fondamentalmente git su https + webdav non è pratico, perché il client git può usare solo l'autorizzazione di base ma non salva la password e alcuni plugin IDE non inoltrano nemmeno la domanda della password nella loro interfaccia utente.

Allora devo usare git su ssh. Ho installato gitosi e funziona fondamentalmente con chiavi asimmetriche, ok. Dovrò chiedere a ciascun sviluppatore di installare la propria chiave, posso farlo, dimenticare la configurazione zero.

Quindi voglio che gli sviluppatori accedano agli strumenti Web (wiki, ticket, ecc.) Che si trovano su https, ma questa volta devo fornire loro un login / password o un'altra chiave privata solo perché i formati non sono compatibili tra SSH e SSL e il posto dove archiviarlo sul sistema operativo non è lo stesso. Ora devo dimenticare SSO?

Mi sbaglio?

Risposte:


11

Riepilogo TL; DR: se si dispone di un certificato SSL / X.509 + chiave, fornire semplicemente il file della chiave privata a ssh. Oppure , se hai già una chiave SSH id_rsa, usala con OpenSSL quando firmi un CSR. È tutto.


Supponiamo che tu abbia un certificato SSL dell'utente joeuser.peme la sua chiave privata joeuser.key.

Poiché X.509 utilizza chiavi RSA standard, così come SSH, dovresti essere in grado di dire al tuo client SSH di utilizzare joeuser.key- l'unico requisito è che sia in un formato comprensibile.

Guarda l'interno joeuser.keye controlla se sembra un po 'così:

----- INIZIA TASTO PRIVATO RSA -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- FINE CHIAVE PRIVATA RSA -----

In Open SSL , questo formato è chiamato "PEM" (come in -outform pem) e viene utilizzato per impostazione predefinita. Lo stesso formato viene utilizzato da Open SSH ed è possibile utilizzare ssh -i joeuser.keyper connettersi.

Puoi estrarre la chiave pubblica in id_rsa.pubformato OpenSSH (per metterlo in authorized_keys) con:

ssh-keygen -y -f joeuser.key> joeuser-ssh.pub

(La stessa chiave pubblica in formato PEM può essere estratta con openssl rsa -pubout, ma sarà di scarsa utilità.)


Se hai una chiave DSA, dovrebbe funzionare esattamente come RSA.


ciao, grazie, ma so di poter convertire un formato chiave in un altro per ogni sviluppatore, ma il mio problema è evitare la maggior configurazione possibile da parte loro. Per quanto mi ricordo (confesso di non aver verificato di recente) l'aggiunta di un certificato 509 per tutti i browser client non è banale.

4
nraynaud: sono sviluppatori . Se non riescono a installare un certificato X.509 sul loro browser preferito (almeno seguendo TFM), è già spaventoso.
user1686,

...Comunque. Per i browser basati su NSS (Firefox, Mozilla, Epiphany) c'è una serie di strumenti da riga di comando da modificare cert.db. Per Windows, i certificati possono essere installati utilizzando certutil o (credo) tramite i criteri di gruppo AD. SSH non richiede alcuna configurazione, solo ssh-keygen -y -fe scarica entrambi i file su homedir dell'utente.
user1686,

4
non sono sviluppatori, ma matricole fuori scuola e stagisti. Li sto solo martellando con git, sicurezza web, javascript, sicurezza e codice pulito. Voglio solo limitare questo tipo di cose incentrate sullo sviluppo. (inoltre, odio le persone che mi impongono questo tipo di cose sciocche, quindi solo per evitare di imporlo agli altri)

2
Mentre funzionerà, ti sconsiglio. Stai usando gli stessi tasti, ma in modi diversi, formati diversi. Quando gli utenti generano nuovi certificati X.509, useranno comunque chiavi diverse per SSH e HTTPS. Avrebbe senso se OpenSSH supportasse la PKI X.509 completa (come fa OpenVPN, in cui è possibile utilizzare script per collegare certs a LDAP e verificare se un utente fa parte del gruppo appropriato).
Hubert Kario,

5

OpenSSH ha il supporto sperimentale per i certificati x509 qui:

http://roumenpetrov.info/openssh

È possibile emettere un singolo certificato x509 per utente e utilizzarli per entrambi.

invece di inserire la pubkey dell'utente nelle loro chiavi autorizzate, è possibile specificare i DN consentiti dei certificati utente; e devi configurare il server web / l'applicazione web in modo che il DN sia tradotto in un nome utente.


Grazie mille, ma l'installazione è anche peggio di quella che penso.

Intendi installare la versione patchata di openssh? potrebbe essere già stato spedito dalla tua distribuzione (so che almeno Gentoo lo fa). Non ha senso utilizzare la stessa chiave RSA per entrambe le applicazioni ma con un formato diverso: è comunque necessario impostare manualmente la chiave pubblica ssh di ciascun utente. OTOH, con le chiavi x.509, potresti tenere la tua CA separata e aggiungere nuovi utenti a SSH o HTTPS può essere fatto senza conoscere la loro chiave pubblica, devi solo scegliere un criterio DN coerente ...
b0fh

2
Cordiali saluti, questa funzionalità è ora nella versione principale di OpenSSH.
Zoredache,

1

Sei quasi sfortunato: chiavi SSH e certificati SSL sono animali diversi e per quanto ne so non sono intercambiabili.

La soluzione migliore è probabilmente quella di configurare il single sign-on / archivio di password condivise / qualunque cosa per i tuoi strumenti web e lasciare git / gitosis come isola di autenticazione.

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.