मैं SSH और SSL (https) के लिए एक ही कुंजी का उपयोग कैसे कर सकता हूं


12

मैं छोटी टीम के लिए विकास उपकरण स्थापित करने का प्रयास कर रहा हूं, और मुझे प्रमाणीकरण सही नहीं मिल सकता है।

चूंकि हम एक वितरित टीम हैं, सर्वर इंटरनेट पर है। और मुझे SSO + शून्य क्लाइंट कॉन्फ़िगरेशन प्राप्त करना है।

तो मूल रूप से https + webdav पर git अव्यावहारिक है, क्योंकि git क्लाइंट केवल मूल स्थिति का उपयोग कर सकता है, लेकिन पासवर्ड नहीं बचाता है और कुछ IDE प्लगइन अपने UI में पासवर्ड प्रश्न को आगे नहीं बढ़ाते हैं।

मुझे ssh पर git का उपयोग करना है। मैंने गिटोसिस स्थापित किया और यह मूल रूप से असममित कुंजियों के साथ काम करता है, ठीक है। मुझे प्रत्येक देव को अपनी कुंजी स्थापित करने के लिए कहना होगा, मैं ऐसा कर सकता हूं, शून्य कॉन्फ़िगरेशन भूल सकता हूं।

फिर मैं चाहता हूं कि डेवलपर्स वेब टूल (विकी, टिकट इत्यादि) तक पहुंचें जो कि https पर हैं, लेकिन इस बार मुझे उन्हें या तो लॉगिन / पासवर्ड या अन्य निजी कुंजी देनी होगी, क्योंकि प्रारूप एसएसएच के बीच संगत नहीं हैं। और एसएसएल और ओएस पर इसे स्टोर करने की जगह समान नहीं है। अब, मुझे एसएसओ को भूलना होगा?

क्या मैं गलत हूं?

जवाबों:


11

TL; DR सारांश: यदि आपके पास SSL / X.509 प्रमाणपत्र + कुंजी है, तो बस निजी कुंजी फ़ाइल को दें sshया , यदि आपके पास पहले से ही SSH कुंजी है id_rsa, तो CSR पर हस्ताक्षर करते समय OpenSSL के साथ इसका उपयोग करें। बस इतना ही।


मान लेते हैं कि आपके पास किसी उपयोगकर्ता का SSL प्रमाणपत्र joeuser.pemऔर उसकी निजी कुंजी है joeuser.key

चूँकि X.509 मानक RSA कुंजियों का उपयोग करता है, और ऐसा SSH करता है, इसलिए आपको अपने SSH क्लाइंट को उपयोग करने के लिए केवल बताने में सक्षम होना चाहिए joeuser.key- केवल आवश्यकता यह है कि यह एक समझने योग्य प्रारूप में हो।

इनसाइड के इनसाइड को देखें joeuser.keyऔर जांचें कि क्या यह इस तरह दिखता है:

----- BEGIN RSA निजी कुंजी -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- END RSA निजी कुंजी -----

ओपन एसएसएल में , इस प्रारूप को "पीईएम" (जैसा कि -outform pem) कहा जाता है और डिफ़ॉल्ट रूप से उपयोग किया जाता है। उसी प्रारूप का उपयोग ओपन एसएसएच द्वारा किया जाता है , और आप ssh -i joeuser.keyकनेक्ट करने के लिए उपयोग कर सकते हैं।

आप सार्वजनिक कुंजी को OpenSSH id_rsa.pubप्रारूप में (डालने के लिए authorized_keys) के साथ निकाल सकते हैं :

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

(पीईएम प्रारूप में एक ही सार्वजनिक कुंजी के साथ निकाला जा सकता है openssl rsa -pubout, लेकिन यह बहुत कम काम का होगा।)


यदि आपके पास डीएसए कुंजी है, तो यह आरएसए की तरह ही काम करना चाहिए


हैलो, धन्यवाद, लेकिन मुझे पता है कि मैं प्रत्येक डेवलपर के लिए एक कुंजी प्रारूप को दूसरे में बदल सकता हूं, लेकिन मेरी समस्या उनके हिस्से पर यथासंभव कॉन्फ़िगरेशन से बच रही है। जहां तक ​​मुझे याद है (मैं मानता हूं कि मैंने हाल ही में जांच नहीं की थी) सभी क्लाइंट ब्राउज़र के लिए 509 प्रमाणपत्र जोड़ना तुच्छ नहीं है।

4
nraynaud: वे डेवलपर्स हैं । यदि वे अपने पसंदीदा ब्राउज़र पर X.509 प्रमाणपत्र स्थापित नहीं कर सकते हैं (कम से कम TFM का अनुसरण करके), तो यह पहले से ही डरावना है।
user1686

... वैसे भी। एनएसएस-आधारित ब्राउज़रों (फ़ायरफ़ॉक्स, मोज़िला, एपिफेनी) के लिए संशोधित करने के लिए कमांड-लाइन टूल का एक सेट है cert.db। विंडोज के लिए, AD समूह नीति के माध्यम से प्रमाण पत्र या (मुझे लगता है) का उपयोग करके प्रमाणपत्र स्थापित किए जा सकते हैं। SSH को किसी भी विन्यास की आवश्यकता नहीं है, बस ssh-keygen -y -fऔर दोनों फाइलों को उपयोगकर्ता के होमडिर पर डंप करें।
user1686

4
वे डेवलपर नहीं हैं, वे स्कूल और इंटर्न से बाहर निकलते हैं। मैं उन्हें सिर्फ git, वेब सुरक्षा, जावास्क्रिप्ट, सुरक्षा और स्वच्छ कोड के साथ अंकित कर रहा हूं। मैं सिर्फ इस तरह के गैर-विकास केंद्रित सामान को सीमित करना चाहता हूं। (इसके अलावा, मैं ऐसे लोगों से नफरत करता हूं, जो मुझे इस तरह की मूर्खतापूर्ण चीजें थोपते हैं, इसलिए मुझे सिर्फ दूसरों पर थोपने से बचना है)

2
जबकि यह काम करेगा, मैं इसके खिलाफ सलाह दूंगा। आप एक ही कुंजी का उपयोग कर रहे हैं, लेकिन अलग-अलग तरीकों से, विभिन्न स्वरूपों में। जब उपयोगकर्ता नए X.509 सेरट उत्पन्न करते हैं, तो वे वैसे भी SSH और HTTPS के लिए विभिन्न कुंजियों का उपयोग करेंगे। यह समझ में आता है कि अगर OpenSSH पूर्ण X.509 PKI (जिस तरह से OpenVPN करता है, जहां आप स्क्रिप्ट को LDAP से लिंक करने के लिए उपयोग कर सकते हैं और जाँच कर सकते हैं कि कोई उपयोगकर्ता उपयुक्त समूह में है)।
ह्यूबर्ट करियो

5

OpenSSH के पास यहाँ X509 प्रमाणपत्रों के लिए प्रायोगिक समर्थन है:

http://roumenpetrov.info/openssh

आप प्रति उपयोगकर्ता एक एकल x509 प्रमाणपत्र जारी कर सकते हैं और दोनों के लिए उनका उपयोग कर सकते हैं।

उपयोगकर्ता pubkey को उनके अधिकृत_की में डालने के बजाय, आप उपयोगकर्ता प्रमाणपत्र के अनुमत DN को निर्दिष्ट कर सकते हैं; और आपको वेबसर्वर / वेब एप्लिकेशन को कॉन्फ़िगर करना होगा ताकि DN उपयोगकर्ता नाम से अनुवादित हो।


बहुत बहुत धन्यवाद, लेकिन स्थापना और भी बदतर है कि विन्यास मुझे लगता है।

आप ओपनश के पैचेड संस्करण को स्थापित करने का मतलब है? यह आपके वितरण द्वारा पहले ही भेज दिया जा सकता है (मुझे पता है कि कम से कम जेंटू करता है)। दोनों अनुप्रयोगों के लिए एक ही RSA कुंजी का उपयोग करने का कोई मतलब नहीं है, लेकिन एक अलग प्रारूप के साथ - आपको अभी भी प्रत्येक उपयोगकर्ता की ssh सार्वजनिक कुंजी को हाथ से सेट करना होगा। OTOH, x.509 कुंजियों के साथ, आप अपने CA को अलग रख सकते हैं, और SSH या HTTPS में नए उपयोगकर्ताओं को जोड़कर उनकी सार्वजनिक कुंजी के ज्ञान के बिना किया जा सकता है, आपको केवल एक सुसंगत DN नीति चुनने की आवश्यकता है ...
b0fh

2
FYI करें, यह कार्यक्षमता अब OpenSSH के मेनलाइन संस्करण में है।
ज़ोराडशे २

1

आप भाग्य से बहुत बाहर हैं - एसएसएच कुंजी और एसएसएल प्रमाणपत्र अलग-अलग जानवर हैं और जहां तक ​​मुझे पता है कि वे विनिमेय नहीं हैं।

आपका सबसे अच्छा दांव संभवतः एकल साइन-ऑन / साझा पासवर्ड स्टोर / जो भी आपके वेब टूल के लिए कॉन्फ़िगर करना है और प्रमाणीकरण द्वीप के रूप में गिट / गिटोसिस को छोड़ना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.