ฉันจะใช้คีย์เดียวกันสำหรับ SSH และ SSL (https) ได้อย่างไร


12

ฉันกำลังพยายามติดตั้งเครื่องมือในการพัฒนาสำหรับทีมเล็ก ๆ และฉันไม่สามารถตรวจสอบสิทธิ์ได้

เนื่องจากเราเป็นทีมกระจายเซิร์ฟเวอร์อยู่บนอินเทอร์เน็ต และฉันต้องการให้มีการกำหนดค่าไคลเอ็นต์ SSO + ศูนย์

ดังนั้นโดยทั่วไปแล้วคอมไพล์บน https + webdav นั้นใช้ไม่ได้เนื่องจากไคลเอนต์ git สามารถใช้การตรวจสอบขั้นพื้นฐานเท่านั้น แต่ไม่ได้บันทึกรหัสผ่านและปลั๊กอิน IDE บางตัวไม่ได้ส่งต่อคำถามรหัสผ่านใน UI ของพวกเขา

ฉันต้องใช้คอมไพล์มากกว่า ssh แล้ว ฉันติดตั้ง gitosis และมันใช้งานได้กับคีย์ไม่สมมาตร ฉันจะต้องขอให้แต่ละ dev ติดตั้งกุญแจของพวกเขาฉันสามารถทำได้ลืมการตั้งค่าเป็นศูนย์

จากนั้นฉันต้องการให้นักพัฒนาเข้าถึงเครื่องมือเว็บ (wiki, tickets, ฯลฯ ) ที่อยู่บน https แต่คราวนี้ฉันต้องให้พวกเขาทั้งการเข้าสู่ระบบ / รหัสผ่านหรือกุญแจส่วนตัวอื่นเพียงเพราะรูปแบบไม่เข้ากันระหว่าง SSH และ SSL และสถานที่จัดเก็บไว้บนระบบปฏิบัติการไม่เหมือนกัน ตอนนี้ฉันต้องลืม SSO หรือไม่

ฉันเข้าใจผิด

คำตอบ:


11

TL; DR สรุป:หากคุณมี SSL / X.509 ใบรับรอง + sshแป้นเพียงแค่ให้ไฟล์คีย์ส่วนตัวถึง หรือถ้าคุณมีคีย์ SSH id_rsaแล้วให้ใช้กับ OpenSSL เมื่อลงชื่อ CSR นั่นคือทั้งหมดที่


สมมติว่าคุณมีใบรับรอง SSL ของผู้ใช้ในและคีย์ส่วนตัวในjoeuser.pemjoeuser.key

เนื่องจาก X.509 ใช้คีย์ RSA มาตรฐานและ SSH เช่นนั้นคุณควรจะสามารถบอกให้ไคลเอ็นต์ SSH ของคุณใช้joeuser.key- ข้อกำหนดเพียงอย่างเดียวคือมันอยู่ในรูปแบบที่เข้าใจได้

ดูข้างในjoeuser.keyและตรวจสอบว่ามันดูเหมือนเป็นแบบนี้หรือไม่:

----- เริ่ม BEGIN RSA กุญแจส่วนตัว -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- สิ้นสุดคีย์ส่วนตัว RSA -----

ใน Open SSLรูปแบบนี้เรียกว่า "PEM" (เหมือนใน-outform pem) และใช้เป็นค่าเริ่มต้น Open SSHใช้รูปแบบเดียวกันและคุณสามารถใช้ssh -i joeuser.keyเพื่อเชื่อมต่อ

คุณสามารถแยกกุญแจสาธารณะในid_rsa.pubรูปแบบOpenSSH (สำหรับใส่ลงไปauthorized_keys) ด้วย:

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

(พับลิกคีย์เดียวกันในรูปแบบ PEM สามารถแตกได้openssl rsa -puboutแต่จะใช้เพียงเล็กน้อย)


หากคุณมีคีย์ DSA มันควรจะทำงานเหมือนกับ RSA ทุกประการ


สวัสดีขอบคุณ แต่ฉันรู้ว่าฉันสามารถแปลงรูปแบบคีย์หนึ่งเป็นรูปแบบอื่นสำหรับนักพัฒนาแต่ละคนได้ แต่ปัญหาของฉันคือหลีกเลี่ยงการกำหนดค่ามากที่สุดเท่าที่จะเป็นไปได้ เท่าที่ฉันจำได้ (ฉันยอมรับว่าฉันไม่ได้ตรวจสอบเมื่อเร็ว ๆ นี้) การเพิ่มใบรับรอง 509 สำหรับเบราว์เซอร์ไคลเอ็นต์ทั้งหมดนั้นไม่สำคัญ

4
nraynaud: พวกเขาเป็นนักพัฒนา หากพวกเขาไม่สามารถติดตั้งใบรับรอง X.509 ไปยังเบราว์เซอร์ที่ชื่นชอบ (อย่างน้อยโดยการติดตาม TFM) มันน่ากลัวอยู่แล้ว
1686

...อย่างไรก็ตาม. เบราว์เซอร์ NSS-based (Firefox, Mozilla, Epiphany) cert.dbมีชุดเครื่องมือบรรทัดคำสั่งในการปรับเปลี่ยน สำหรับ Windows สามารถติดตั้งใบรับรองโดยใช้ certutil หรือ (ฉันคิดว่า) ผ่านนโยบายกลุ่มโฆษณา SSH ไม่ต้องการการกำหนดค่าเลยเพียงแค่ssh-keygen -y -fถ่ายโอนไฟล์ทั้งสองไปยังโฮมเพของผู้ใช้
1686

4
พวกเขาไม่ใช่นักพัฒนาพวกเขาออกจากโรงเรียนและฝึกงาน ฉันแค่ตอกพวกเขาด้วย git ความปลอดภัยของเว็บจาวาสคริปต์ความปลอดภัยและรหัสที่สะอาด ฉันแค่ต้องการ จำกัด สิ่งที่ไม่เป็นศูนย์กลางในการพัฒนาแบบนี้ (ยิ่งกว่านั้นฉันเกลียดคนที่ทำให้ฉันเป็นคนงี่เง่าแบบนี้ดังนั้นฉันแค่เพื่อหลีกเลี่ยงการเก็บภาษีให้กับคนอื่น ๆ )

2
ในขณะนี้จะใช้งานได้ฉันจะแนะนำให้กับมัน คุณกำลังใช้คีย์เดียวกัน แต่ในรูปแบบที่แตกต่างกันในรูปแบบที่แตกต่างกัน เมื่อผู้ใช้สร้าง X.509 certs ใหม่พวกเขาจะใช้คีย์ที่แตกต่างกันสำหรับ SSH และ HTTPS มันจะสมเหตุสมผลถ้า OpenSSH จะรองรับ X.509 PKI แบบเต็ม (วิธีที่ OpenVPN ทำซึ่งคุณสามารถใช้สคริปต์เพื่อลิงก์ certs กับ LDAP และตรวจสอบว่าผู้ใช้อยู่ในกลุ่มที่เหมาะสมหรือไม่)
Hubert Kario

5

OpenSSH มีการสนับสนุนการทดลองสำหรับใบรับรอง x509 ที่นี่:

http://roumenpetrov.info/openssh

คุณสามารถออกใบรับรอง x509 หนึ่งใบต่อผู้ใช้หนึ่งคนและใช้สำหรับทั้งคู่

แทนการใส่ pubkey ผู้ใช้ใน authorized_keys ของพวกเขาคุณสามารถระบุ DNs ที่อนุญาตของใบรับรองผู้ใช้; และคุณต้องกำหนดค่าเว็บเซิร์ฟเวอร์ / แอปพลิเคชันเว็บเพื่อให้ DN แปลเป็นชื่อผู้ใช้


ขอบคุณมาก แต่การติดตั้งยิ่งแย่กว่าที่ฉันคิด

คุณหมายถึงการติดตั้ง openssh เวอร์ชันที่แพตช์หรือไม่? มันอาจจะถูกจัดส่งโดยการกระจายของคุณ (ฉันรู้ว่าอย่างน้อย Gentoo ทำ) ไม่มีจุดในการใช้คีย์ RSA เดียวกันสำหรับทั้งสองแอปพลิเคชัน แต่มีรูปแบบที่แตกต่างกัน - คุณยังคงต้องตั้งค่าคีย์สาธารณะ ssh ของผู้ใช้แต่ละคนด้วยมือ OTOH ด้วยปุ่ม x.509 คุณสามารถแยก CA ของคุณออกจากกันและเพิ่มผู้ใช้ใหม่ใน SSH หรือ HTTPS สามารถทำได้โดยไม่ต้องรู้กุญแจสาธารณะของพวกเขาคุณจะต้องเลือกนโยบาย DN ที่สอดคล้องกัน ...
b0fh

2
FYI, ฟังก์ชั่นนี้อยู่ใน OpenSSH เวอร์ชัน mainline
Zoredache

1

คุณโชคไม่ดีเลยทีเดียว - กุญแจ SSH และใบรับรอง SSL เป็นสัตว์ต่าง ๆ และเท่าที่ฉันรู้ว่าพวกเขาไม่สามารถใช้แทนกันได้

ทางออกที่ดีที่สุดของคุณน่าจะกำหนดค่าการเก็บรหัสผ่านการลงชื่อเข้าใช้ครั้งเดียว / อะไรก็ได้สำหรับเครื่องมือเว็บของคุณและปล่อยให้ git / gitosis เป็นเกาะรับรองความถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.