SSH ve SSL (https) için aynı anahtarı nasıl kullanabilirim


12

Küçük bir ekip için geliştirme araçlarını yüklemeye çalışıyorum ve kimlik doğrulamasını doğru yapamıyorum.

Dağıtılmış bir ekip olduğumuz için sunucu internette. Ve SSO + sıfır istemci yapılandırmasına sahip olmak istiyorum.

Yani temelde git https + webdav üzerinden pratik değildir, çünkü git istemcisi sadece temel yetkilendirmeyi kullanabilir, ancak şifreyi kaydetmez ve bazı IDE eklentileri kullanıcı arayüzündeki şifre sorusunu bile iletmez.

O zaman git'i ssh üzerinden kullanmalıyım. Gitosis kurdum ve asimetrik tuşlarla çalışıyor, tamam. Her geliştiriciden anahtarını yüklemesini istemeliyim, bunu yapabilirim, sıfır yapılandırmayı unuturum.

Sonra geliştiricilerin https'de bulunan web araçlarına (wiki, biletler, vb.) Erişmelerini istiyorum, ancak bu sefer sadece biçimler SSH arasında uyumlu olmadığı için onlara bir giriş / şifre veya başka bir özel anahtar vermem gerekiyor SSL ve işletim sisteminde depolanacağı yer aynı değildir. Şimdi, TOA'yı unutmak zorunda mıyım?

Yanlış mıyım?

Yanıtlar:


11

TL; DR özeti: SSL / X.509 sertifika + anahtarınız varsa, özel anahtar dosyasını vermeniz yeterlidir ssh. Veya , zaten bir SSH anahtarınız varsa id_rsa, bir CSR'yi imzalarken OpenSSL ile kullanın. Bu kadar.


Bir kullanıcının SSL sertifikanız olduğunu joeuser.pemve özel anahtarının olduğunu varsayalım joeuser.key.

X.509 standart RSA anahtarları kullandığından ve SSH kullandığından, SSH istemcinize kullanmasını söyleyebilmeniz gerekir joeuser.key- tek gereksinim, anlaşılabilir bir formatta olmasıdır.

İç kısımlarına bakın ve bunun gibi görünüp joeuser.keygörünmediğini kontrol edin:

----- RSA ÖZEL ANAHTARINA BAŞLAYIN -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- RSA ÖZEL ANAHTARINI SONLANDIR -----

Open SSL'de bu biçime "PEM" (olduğu gibi -outform pem) denir ve varsayılan olarak kullanılır. Aynı biçim Açık SSH tarafından kullanılır ssh -i joeuser.keyve bağlanmak için kullanabilirsiniz .

Genel anahtarı OpenSSH id_rsa.pubbiçiminde (içine koymak için authorized_keys) aşağıdakilerle çıkarabilirsiniz :

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

(PEM biçimindeki aynı ortak anahtarla çıkarılabilir openssl rsa -pubout, ancak çok az faydası olacaktır.)


DSA anahtarınız varsa, RSA ile aynı şekilde çalışması gerekir .


merhaba, teşekkürler, ancak her geliştirici için bir anahtar biçimini diğerine dönüştürebileceğimi biliyorum, ancak sorunum mümkün olduğunca çok yapılandırmadan kaçınmak. Hatırladığım kadarıyla (son zamanlarda kontrol etmediğimi itiraf ediyorum) tüm istemci tarayıcısı için 509 sertifikası eklemek önemsiz değil.

4
nraynaud: Onlar geliştiriciler . En sevdikleri tarayıcılara bir X.509 sertifikası yükleyemezlerse (en azından TFM'yi izleyerek), zaten korkutucu.
user1686

... neyse. NSS tabanlı tarayıcılarda (Firefox, Mozilla, Epiphany) değiştirilecek bir dizi komut satırı aracı vardır cert.db. Windows için, sertifikalar certutil veya (sanırım) AD grup ilkesi kullanılarak yüklenebilir. SSH hiçbir yapılandırma gerektirmez, her ssh-keygen -y -fiki dosyayı da kullanıcının ana bilgisayarına dökün.
user1686

4
onlar geliştirici değil, okuldan ve stajyerden birinci sınıf öğrencisi. Sadece git, web güvenliği, javascript, güvenlik ve temiz kod ile onları dövüyorum. Ben sadece bu tür kalkınma merkezli olmayan şeyleri sınırlamak istiyorum. (üstelik, bana bu tür aptalca şeyler empoze eden insanlardan nefret ediyorum, bu yüzden bunu başkalarına dayatmaktan kaçınıyorum)

2
Bu işe yarayacak olsa da, ona karşı tavsiyede bulunacağım. Aynı anahtarları, ancak farklı biçimlerde, farklı biçimleri kullanıyorsunuz. Kullanıcılar yeni X.509 sertifikaları oluşturduklarında, yine de SSH ve HTTPS için farklı anahtarlar kullanacaklar. OpenSSH'nin tam X.509 PKI'yı destekleyip desteklemeyeceği mantıklıdır (OpenVPN'in yaptığı gibi, sertifikaları LDAP'ye bağlamak ve bir kullanıcının uygun grupta olup olmadığını kontrol etmek için komut dosyalarını kullanabilirsiniz).
Hubert

5

OpenSSH'nin x509 sertifikaları için deneysel desteği var:

http://roumenpetrov.info/openssh

Kullanıcı başına tek bir x509 sertifikası verebilir ve bunları her ikisi için de kullanabilirsiniz.

kullanıcı pubkey'sini yetkili_anahtarlara koymak yerine kullanıcı sertifikalarının izin verilen DN'lerini belirtebilirsiniz; ve web sunucusu / web uygulamasını DN'nin bir kullanıcı adına çevrilecek şekilde yapılandırmanız gerekir.


Çok teşekkürler, ama kurulum bence bu yapılandırma daha da kötü.

Yani openssh'ın yamalı sürümünü mü kuruyorsunuz? dağıtımınız tarafından zaten sevk edilmiş olabilir (en azından Gentoo'nun yaptığını biliyorum). Her iki uygulama için aynı RSA anahtarını kullanmanın bir anlamı yoktur, ancak farklı bir formatta - yine de her kullanıcının ssh ortak anahtarını el ile ayarlamanız gerekir. OTOH, x.509 tuşlarıyla CA'nızı ayrı tutabilirsiniz ve SSH veya HTTPS'ye yeni kullanıcılar eklemek, genel anahtarları bilmeden yapılabilir, yalnızca tutarlı bir DN politikası seçmeniz gerekir ...
b0fh

2
Bilginize, bu işlevsellik artık OpenSSH'nin ana sürümündedir.
Zoredache

1

Şansınız yok - SSH anahtarları ve SSL sertifikaları farklı hayvanlardır ve bildiğim kadarıyla değiştirilemezler.

En iyi seçeneğiniz, muhtemelen tek oturum açma / paylaşılan şifre deposunu / web araçlarınız için her şeyi yapılandırmak ve git / gitosis'i bir kimlik doğrulama adası olarak bırakmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.