Як я можу використовувати один і той же ключ для SSH та SSL (https)


12

Я намагаюся встановити інструменти розробки для невеликої команди, і я не можу отримати автентифікацію правильно.

Оскільки ми є розповсюдженою командою, сервер знаходиться в Інтернеті. І я хотів би мати SSO + нульову конфігурацію клієнта.

Тому в основному git через https + webdav недоцільно, оскільки клієнт git може використовувати лише базовий auth, але не зберігає пароль, а деякі додатки IDE навіть не пересилають питання про пароль у своєму інтерфейсі.

Тоді я повинен використовувати git over ssh. Я встановив гітоз, і він в основному працює з асиметричними ключами, добре. Мені доведеться попросити кожного розробника встановити його ключ, я можу це зробити, забути нульову конфігурацію.

Тоді я хочу, щоб розробники отримували доступ до веб-інструментів (вікі, квитків тощо), які є на https, але цього разу я повинен надати їм або логін / пароль, або інший приватний ключ, лише тому, що формати не сумісні між SSH і SSL, і місце для його зберігання в ОС не те саме. Тепер я повинен забути SSO?

Я помиляюся?

Відповіді:


11

Підсумок TL; DR: Якщо у вас є сертифікат SSL / X.509 + ключ, просто надайте файл приватного ключа ssh. Або якщо у вас вже є ключ SSH id_rsa, просто використовуйте його з OpenSSL під час підписання CSR. Це все.


Припустимо, у вас є сертифікат SSL користувача joeuser.pemта його приватний ключ joeuser.key.

Оскільки X.509 використовує стандартні ключі RSA, а також SSH, ви можете просто сказати своєму SSH клієнту використовувати joeuser.key- єдина вимога полягає у тому, щоб він був у зрозумілому форматі.

Подивіться на нутрощі joeuser.keyта перевірте, чи виглядає він таким чином:

----- ПОЧАКУЙТЕ КЛЮЧ РАСА -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2л / 2
----- КРАЧНИЙ КЛЮЧ РСА -----

У 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 cert у свій улюблений браузер (принаймні, дотримуючись TFM), це вже страшно.
користувач1686

... все одно. Для браузерів на основі NSS (Firefox, Mozilla, Epiphany) існує набір інструментів командного рядка для зміни cert.db. Для Windows сертифікати можна встановити за допомогою certutil або (я думаю) через групову політику AD. SSH взагалі не вимагає конфігурації, просто ssh-keygen -y -fі завантажуйте обидва файли в homedir користувача.
користувач1686

4
вони не розробники, вони першокурсники поза школою та інтерни. Я просто забиваю їх git, веб-безпеку, javascript, безпеку та чистий код. Я просто хочу обмежити цей вид нецентричних речей. (до того ж я ненавиджу людей, які нав'язують мені подібні дурні речі, тому я просто уникаю цього нав'язувати іншим)

2
Поки це буде працювати, я раджу проти цього. Ви використовуєте однакові клавіші, але по-різному, різного формату. Коли користувачі генерують нові X.509 серти, вони все одно будуть використовувати різні ключі для SSH та HTTPS. Було б сенс, якщо OpenSSH підтримує повний X.509 PKI (як це робить OpenVPN, де ви можете використовувати скрипти для прив'язки цертів до LDAP і перевірки, чи є користувач у відповідній групі).
Хуберт Каріо

5

Тут OpenSSH має експериментальну підтримку сертифікатів x509:

http://roumenpetrov.info/openssh

Ви можете видати один сертифікат x509 на кожного користувача та використовувати їх для обох.

замість того, щоб розміщувати паблік користувача в їхніх авторизованих_кеях, ви можете вказати дозволені DN-адреси сертифікатів користувача; і ви повинні налаштувати веб-сервер / веб-додаток так, щоб DN перекладалося на ім’я користувача.


Дякую велике, але установка ще гірша за конфігурацію, яку я думаю.

Ви маєте на увазі встановлення виправленої версії openssh? це може бути вже поставлене вашим розповсюдженням (я знаю, що принаймні Gentoo це робить). Немає сенсу використовувати один і той же ключ RSA для обох програм, але в іншому форматі - вам все одно потрібно встановити відкритий ключ ssh кожного користувача вручну. OTOH, з клавішами x.509, ви можете тримати свій CA окремо, а додавання нових користувачів до SSH або HTTPS можна робити без знання їх відкритого ключа, вам потрібно лише вибрати послідовну політику DN ...
b0fh

2
FYI, ця функціональність тепер знаходиться в основній версії OpenSSH.
Зоредаче

1

Вам дуже не пощастило - ключі SSH та сертифікати SSL - це різні тварини, і наскільки я знаю, вони не взаємозамінні.

Ваша найкраща ставка - це, мабуть, налаштування єдиного входу / спільного зберігання паролів / що б не було для ваших веб-інструментів і залишити git / gitosis як острів автентифікації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.