Como posso usar a mesma chave para SSH e SSL (https)

12

Estou tentando instalar as ferramentas de desenvolvimento para uma equipe pequena e não consigo fazer a autenticação corretamente.

Como somos uma equipe distribuída, o servidor está na internet. E gostaria de ter uma configuração de cliente SSO + zero.

Então, basicamente, git over https + webdav é impraticável, porque o cliente git só pode usar a autenticação básica, mas não salva a senha e algum plugin IDE nem mesmo encaminha a pergunta da senha na interface do usuário.

Eu tenho que usar o git over ssh então. Eu instalei a gitosis e basicamente funciona com chaves assimétricas, ok. Vou ter que pedir a cada desenvolvedor para instalar a chave, eu posso fazer isso, esquecer a configuração zero.

Então eu quero que os desenvolvedores acessem as ferramentas da web (wiki, tickets, etc.) que estão em https, mas dessa vez eu tenho que dar um login / senha ou outra chave privada só porque os formatos não são compatível entre SSH e SSL e o local para armazená-lo no sistema operacional não é o mesmo. Agora, eu tenho que esquecer o SSO?

Estou enganado?

    
por Tshepang 18.02.2010 / 17:18

3 respostas

9

TL; Resumo do DR: Se você tiver uma chave + certificado SSL / X.509, basta fornecer o arquivo de chave privada para ssh . Ou , se você já tiver uma chave SSH em id_rsa , use-a com o OpenSSL ao assinar um CSR. Isso é tudo.

Vamos supor que você tenha um certificado SSL de usuário em joeuser.pem e sua chave privada em joeuser.key .

Como o X.509 usa chaves RSA padrão, e o mesmo acontece com o SSH, você deve poder apenas dizer ao seu cliente SSH para usar joeuser.key - o único requisito é que ele esteja em um formato compreensível.

Olhe o interior de joeuser.key e verifique se parece com isso:

-----BEGIN RSA PRIVATE KEY-----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L/2
-----END RSA PRIVATE KEY-----

Em Open SSL , esse formato é chamado de "PEM" (como em -outform pem ) e é usado por padrão. O mesmo formato é usado pelo Open SSH , e você pode usar ssh -i joeuser.key para se conectar.

Você pode extrair a chave pública no formato OpenSSH id_rsa.pub (para colocar em authorized_keys ) com:

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

(A mesma chave pública no formato PEM pode ser extraída com openssl rsa -pubout , mas será de pouca utilidade.)

Se você tiver uma chave DSA, ela deverá funcionar exatamente da mesma forma que o RSA.

    
por 18.02.2010 / 20:45
4

O OpenSSH tem suporte experimental para certificados x509 aqui:

link

Você pode emitir um único certificado x509 por usuário e usá-los para ambos.

em vez de colocar o pubkey do usuário em suas authorized_keys, você pode especificar os DNs permitidos dos certificados do usuário; e você deve configurar o servidor da web / aplicativo da web para que o DN seja traduzido para um nome de usuário.

    
por 18.02.2010 / 18:06
1

Você está praticamente sem sorte - chaves SSH e certificados SSL são animais diferentes e, até onde eu sei, eles não são intercambiáveis.

Sua melhor aposta é provavelmente configurar o armazenamento de senha / logon único / o que for para suas ferramentas da web & deixe o git / gitosis como uma ilha de autenticação.

    
por 18.02.2010 / 17:28