Назад | Перейти на главную страницу

Как я могу использовать один и тот же ключ для SSH и SSL (https)

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

Поскольку мы распределенная команда, сервер находится в Интернете. И я бы хотел иметь SSO + настройку нулевого клиента.

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

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

Затем я хочу, чтобы разработчики получили доступ к веб-инструментам (вики, билеты и т. Д.), Которые находятся на https, но на этот раз я должен предоставить им либо логин / пароль, либо другой закрытый ключ только потому, что форматы несовместимы между SSH. и SSL и место для его хранения в ОС не то же самое. Теперь я должен забыть об SSO?

Я ошибаюсь?

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 и проверьте, выглядит ли это примерно так:

-----BEGIN RSA PRIVATE KEY-----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L/2
-----END RSA PRIVATE KEY-----

В открытомSSL, этот формат называется "PEM" (как в -outform pem) и используется по умолчанию. Тот же формат используется OpenSSH, и вы можете использовать ssh -i joeuser.key для подключения.

Вы можете извлечь общественный ключ в OpenSSH id_rsa.pub формат (для помещения в authorized_keys) с участием:

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

(Тот же открытый ключ в формате PEM можно извлечь с помощью openssl rsa -pubout, но от этого будет мало толку.)


Если у вас есть ключ DSA, он должен работают точно так же, как RSA.

OpenSSH имеет экспериментальную поддержку сертификатов x509 здесь:

http://roumenpetrov.info/openssh

Вы можете выдать один сертификат x509 для каждого пользователя и использовать их для обоих.

вместо того, чтобы помещать пользовательский ключ pubkey в их authorized_keys, вы можете указать разрешенные DN сертификатов пользователей; и вы должны настроить веб-сервер / веб-приложение так, чтобы DN транслировалось в имя пользователя.

Вам в значительной степени не повезло - ключи SSH и сертификаты SSL - разные животные, и, насколько я знаю, они не взаимозаменяемы.

Лучше всего, вероятно, настроить единый вход / общее хранилище паролей / что угодно для ваших веб-инструментов и оставить git / gitosis в качестве острова аутентификации.