Làm cách nào tôi có thể sử dụng cùng một khóa cho SSH và SSL (https)


12

Tôi đang cố gắng cài đặt các công cụ phát triển cho một nhóm nhỏ và tôi không thể xác thực đúng.

Vì chúng tôi là một nhóm phân phối, máy chủ có trên internet. Và tôi muốn có cấu hình máy khách SSO + zero.

Vì vậy, về cơ bản git trên https + webdav là không thực tế, vì ứng dụng khách git chỉ có thể sử dụng auth cơ bản nhưng không lưu mật khẩu và một số plugin IDE thậm chí không chuyển tiếp câu hỏi mật khẩu trong giao diện người dùng của họ.

Mình phải dùng git qua ssh rồi. Tôi đã cài đặt gitosis và về cơ bản nó hoạt động với các phím không đối xứng, ok. Tôi sẽ phải yêu cầu mỗi nhà phát triển cài đặt khóa của họ, tôi có thể làm điều đó, quên cấu hình không.

Sau đó, tôi muốn các nhà phát triển truy cập các công cụ web (wiki, vé, v.v.) trên https, nhưng lần này tôi phải cung cấp cho họ thông tin đăng nhập / mật khẩu hoặc khóa riêng khác chỉ vì các định dạng không tương thích giữa SSH và SSL và nơi lưu trữ nó trên HĐH không giống nhau. Bây giờ, tôi phải quên SSO?

Tôi có nhầm không?

Câu trả lời:


11

Tóm tắt TL; DR: Nếu bạn có khóa chứng chỉ SSL / X.509, chỉ cần cung cấp tệp khóa riêng cho ssh. Hoặc , nếu bạn đã có khóa SSH id_rsa, chỉ cần sử dụng nó với OpenSSL khi đăng nhập CSR. Đó là tất cả.


Giả sử bạn có chứng chỉ SSL của người dùng joeuser.pemvà khóa riêng của nó joeuser.key.

Vì X.509 sử dụng các khóa RSA tiêu chuẩn và SSH cũng vậy, bạn có thể chỉ cần cho khách hàng SSH của bạn sử dụng joeuser.key- yêu cầu duy nhất là nó phải ở định dạng dễ hiểu.

Nhìn vào bên trong joeuser.keyvà kiểm tra xem nó có giống như thế này không:

----- BẮT ĐẦU RSA RIÊNG TƯ -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- KẾT THÚC RSA KẾT THÚC -----

Trong Open SSL , định dạng này được gọi là "PEM" (như trong -outform pem) và được sử dụng theo mặc định. Định dạng tương tự được sử dụng bởi Open SSH và bạn có thể sử dụng ssh -i joeuser.keyđể kết nối.

Bạn có thể trích xuất các công quan trọng trong OpenSSH id_rsa.pubđịnh dạng (ví đưa vào authorized_keys) với:

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

(Có thể trích xuất cùng khóa công khai ở định dạng PEM openssl rsa -pubout, nhưng nó sẽ ít được sử dụng.)


Nếu bạn có khóa DSA, nó sẽ hoạt động giống hệt như RSA.


xin chào, cảm ơn, nhưng tôi biết tôi có thể chuyển đổi một định dạng khóa sang một định dạng khác cho mỗi nhà phát triển, nhưng vấn đề của tôi là tránh càng nhiều cấu hình trên phần của họ càng tốt. Theo như tôi nhớ (tôi thú nhận rằng tôi đã không kiểm tra gần đây) việc thêm chứng chỉ 509 cho tất cả trình duyệt của khách hàng là không tầm thường.

4
nraynaud: Họ là những nhà phát triển . Nếu họ không thể cài đặt chứng chỉ X.509 cho trình duyệt yêu thích của họ (ít nhất là bằng cách theo TFM), điều đó thật đáng sợ.
dùng1686

...dù sao. Đối với các trình duyệt dựa trên NSS (Firefox, Mozilla, Epiphany), có một bộ công cụ dòng lệnh để sửa đổi cert.db. Đối với Windows, chứng chỉ có thể được cài đặt bằng certutil hoặc (tôi nghĩ) thông qua chính sách nhóm AD. SSH không yêu cầu cấu hình nào cả, chỉ ssh-keygen -y -fvà kết xuất cả hai tệp vào homedir của người dùng.
dùng1686

4
họ không phải là nhà phát triển, họ là sinh viên mới ra trường và thực tập. Tôi chỉ đánh lừa họ bằng git, bảo mật web, javascript, bảo mật và mã sạch. Tôi chỉ muốn hạn chế loại công cụ trung tâm không phát triển này. (hơn nữa, tôi ghét những người áp đặt tôi những thứ ngớ ngẩn này, vì vậy tôi chỉ để tránh áp đặt điều đó lên người khác)

2
Trong khi điều này sẽ làm việc, tôi sẽ khuyên chống lại nó. Bạn đang sử dụng cùng một khóa, nhưng theo những cách khác nhau, các định dạng khác nhau. Khi người dùng tạo certs X.509 mới, họ sẽ sử dụng các khóa khác nhau cho SSH và HTTPS. Sẽ có ý nghĩa nếu OpenSSH sẽ hỗ trợ PKI X.509 đầy đủ (cách OpenVPN thực hiện, nơi bạn có thể sử dụng tập lệnh để liên kết certs với LDAP và kiểm tra xem người dùng có thuộc nhóm thích hợp không).
Hubert Kario

5

OpenSSH có hỗ trợ thử nghiệm cho các chứng chỉ x509 tại đây:

http://roumenpetrov.info/openssh

Bạn có thể cấp chứng chỉ x509 cho mỗi người dùng và sử dụng chúng cho cả hai.

thay vì đặt pubkey người dùng trong ủy quyền của họ, bạn có thể chỉ định các DN được phép của chứng chỉ người dùng; và bạn phải định cấu hình ứng dụng web / máy chủ web để DN được dịch sang tên người dùng.


Cảm ơn rất nhiều, nhưng cài đặt thậm chí còn tệ hơn cấu hình mà tôi nghĩ.

Bạn có nghĩa là cài đặt phiên bản vá của openssh? nó có thể đã được phân phối bởi phân phối của bạn (tôi biết rằng ít nhất Gentoo cũng vậy). Không có điểm nào trong việc sử dụng cùng một khóa RSA cho cả hai ứng dụng nhưng với định dạng khác nhau - bạn vẫn phải thiết lập khóa công khai ssh của mỗi người dùng bằng tay. OTOH, với các khóa x.509, bạn có thể tách CA của mình và thêm người dùng mới vào SSH hoặc HTTPS có thể được thực hiện mà không cần biết về khóa chung của họ, bạn chỉ cần chọn chính sách DN nhất quán ...
b0fh

2
FYI, chức năng này hiện đang ở phiên bản chính của OpenSSH.
Zoredache

1

Bạn gặp khá nhiều may mắn - Khóa SSH và chứng chỉ SSL là những động vật khác nhau và theo tôi biết chúng không thể thay thế cho nhau.

Đặt cược tốt nhất của bạn có lẽ là định cấu hình lưu trữ mật khẩu đăng nhập / chia sẻ / bất cứ thứ gì cho các công cụ web của bạn và để git / gitosis làm đảo xác thực.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.