Системный администратор проекта, над которым я работаю, решил, что SSH "слишком много проблем"; вместо этого он настроил Git так, чтобы он был доступен через https://
URL (и аутентификацию по имени / паролю). Сервер для этого URL представляет самозаверяющий сертификат, поэтому он посоветовал всем отключить проверку сертификата. Это не кажется мне хорошей установкой с точки зрения безопасности.
Можно ли сказать Git, что для удаленного X (или лучше для любого удаленного в любом репозитории, который начинается с https://$SERVERNAME/
) он должен принимать определенный сертификат и только этот сертификат? В основном дублирование поведения ключа сервера SSH.
git
ssl-certificate
zwol
источник
источник
Ответы:
Кратко:
~/git-certs/cert.pem
) файлgit
чтобы доверять этому сертификату, используяhttp.sslCAInfo
параметрБолее подробно:
Получить самозаверяющий сертификат удаленного сервера
Предполагается, что URL-адрес сервера
repos.sample.com
и вы хотите получить доступ к нему через порт443
.Есть несколько вариантов, как его получить.
Получить сертификат с помощью openssl
Поймать вывод в файл
cert.pem
и удалить все, кроме части между (и в том числе)-BEGIN CERTIFICATE-
и-END CERTIFICATE-
Содержимое получившегося файла ~ / git-certs / cert.pem может выглядеть так:
Получить сертификат с помощью веб-браузера
Я использую Redmine с репозиториями Git и получаю доступ к одному и тому же URL для веб-интерфейса и доступа к командной строке git. Таким образом, мне пришлось добавить исключение для этого домена в мой веб-браузер.
Используя Firefox, я пошел туда
Options -> Advanced -> Certificates -> View Certificates -> Servers
, нашел там самоподписанный хост, выбрал его и с помощьюExport
кнопки получил точно такой же файл, который был создан с помощьюopenssl
.Примечание: я был немного удивлен, явно не упоминается название органа. Это отлично.
Наличие доверенного сертификата в выделенном файле
Предыдущие шаги должны привести к наличию сертификата в каком-либо файле. Не имеет значения, какой это файл, если он виден вашему git при доступе к этому домену. я использовал
~/git-certs/cert.pem
Примечание. Если вам нужно больше доверенных самоподписанных сертификатов, поместите их в тот же файл:
Это должно работать (но я проверил это только с одним сертификатом).
Настройте git для доверия этому сертификату
Вы также можете попытаться сделать это в масштабе всей системы, используя
--system
вместо--global
.И проверьте это: теперь вы сможете общаться с вашим сервером, не прибегая к:
Если вы уже настроили свой git на игнорирование ssl-сертификатов, удалите его:
и вы также можете проверить, что вы все сделали правильно, без орфографических ошибок:
Что следует перечислить все переменные, вы установили глобально. (Я неправильно ввел http в htt).
источник
Настройки пользователя OSX.
Следующие шаги Принято ответ работал для меня с небольшим дополнением при настройке на OSX.
Я поместил
cert.pem
файл в каталог под моим пользователем OSX, вошедшим в систему, и таким образом заставил меня настроить местоположение для доверенного сертификата.Настройте git для доверия этому сертификату:
источник