Я пытаюсь установить инструменты разработки для небольшой команды, но не могу правильно выполнить аутентификацию.
Поскольку мы распределенная команда, сервер находится в Интернете. И я бы хотел иметь 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 в качестве острова аутентификации.