Подтвердить что ты не робот

Недействительный SSL-сертификат при нажатии на сервер Git

Я использую Gitblit на Windows Server и пытаюсь отправить данные в хранилище с другого компьютера в сети. Я использовал SSL-сертификат (не самоподписанный, но, кажется, подписанный моей компанией? Не совсем уверен, как это работает, но Chrome, IE и т.д. Видят, что он проверен).

Сервер, на котором работает Gitblit, называется его itscm и на рабочем столе разработчика я использую этот URL для передачи данных через TortoiseGit:

git.exe push --progress  "https://itscm:8234/git/TestRepo.git" master

Тем не менее, я получаю эту ошибку:

fatal: невозможно получить доступ к https://itscm: 8234/git/TestRepo.git/ ': проблема с сертификатом SSL: самозаверяющий сертификат в цепочке сертификатов

Когда я иду по этому адресу в Chrome, я получаю 404 на странице, но я вижу, что замок в строке URL-адреса зеленый. Когда я нажимаю на замок, я вижу, что личность подтверждена. Я не понимаю, как мой браузер видит этот сертификат как действительный, но когда я пытаюсь отправить данные в него через Git, он терпит неудачу.

4b9b3361

Ответ 1

Git для Windows есть собственное хранилище доверенных сертификатов, которое обычно находится в файле

  • Git для Windows <= 1.9: [Git installdir]\bin\curl-ca-bundle.crt (например, C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt; настроен ключом http.sslCAinfo в [Git installdir]\etc\gitconfig).
  • Git для Windows >= 2.0: [Git installdir]\mingwXX\ssl\certs\ca-bundle.crt где XX обозначает 32 или 64 (например, C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt), настроенный ключом http.sslCAinfo в C:\ProgramData\Git\config).

Отключение проверки сертификатов (например, установка git config http.sslVerify false) не является хорошей идеей и может быть чрезвычайно опасным (поскольку все проверки безопасности отключены и MitM атаки легко доступны - в зависимости от того, где это установлено, оно применяется для всех новых https-соединений).

Чтобы добавить сертификат (это самоподписанный тот или иной корневой сертификат) в это хранилище доверия, чтобы автоматически доверять ему, вы должны выполнить следующие шаги:

  • Откройте URL-адрес сайта в Internet Explorer
  • Нажмите на символ блокировки на локальной панели и выберите "Показать сертификаты" (или выберите "Свойства сайта" и нажмите "Сертификаты" ).
  • (необязательно) Выберите сертификат, которому вы хотите доверять, в цепочке сертификатов (третья вкладка) и откройте его
  • Перейдите во вторую вкладку "Подробности"
  • Нажмите "Сохранить в файл", выберите "Base64-encoded X.509 (.CER)" и сохраните его с уникальным именем (помните это имя, рекомендуется имя без мест).
  • Теперь у вас есть несколько опций

    • Используйте отдельное хранилище доверия сертификатов, которое содержит только ваш загруженный сертификат, выполнив git config --global http.sslCAinfo "[yourfilename]" в оболочке cli, чтобы использовать этот сертификат только в качестве хранилища доверия.
    • Используйте отдельный магазин доверия сертификатов, который содержит только что загруженный сертификат и все сертификаты из хранилища доверия git, добавив весь контент из файла хранилища системного доверия (путь см. выше), а затем выполните git config --global http.sslCAinfo "[yourfilename]" в cli для использования этого нового хранилища доверия.
    • Обновите файл системного сертификата, добавив содержимое вашего только что сохраненного файла в [path-to-git-trust-store-crt-file] (например, type [yourfilename] >> [path-to-git-trust-store-crt-file] в оболочке cli с правами администратора) ИЛИ используя блокнот (сделайте копию ca-bundle. crt на рабочем столе, добавьте содержимое файла downlaoded.crt, а затем скопируйте его). Недостаток: изменения могут быть перезаписаны при обновлении git

Готово. Теперь этот сертификат находится в хранилище доверия git для Windows.

Ответ 2

TortoiseGit, вероятно, не использует тот же самый супермаркет Chrome. Я думаю, что Chrome использует системный магазин, Firefox использует его самостоятельно. Я не знаю, что использует TortoiseGit.

На клиенте, если вы установите git config http.sslVerify false, у вас может быть больше удачи. Вы также можете установить это глобально.

Ответ 3

Вот что сработало для меня. Создайте папку C:\GitCerts. Затем загрузите файл Base64 .cer (следуйте answer MrTux) в эту папку C:\GitCerts.

  • В командной строке выполните следующую команду: git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • Откройте файл MyCert.cer в Блокноте и оставьте его открытым.
  • Откройте файл Git ca-bundle.crt в другом блокноте. Мой был в месте C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt.
  • Проверьте, что текст сертификата в файле MyCert.cer находится в файле ca-bundle.crt (он должен быть), если не просто скопировать и вставить весь текст из MyCert.cer и добавить его в нижней части ca-bundle.crt(убедитесь, что вы оставите там всю другую информацию о сертификате).

----- НАЧАТЬ СЕРТИФИКАТ -----

Ваша информация о сертификате здесь

----- СЕРТИФИКАТ КОНЕЦ -----

  • Если вам пришлось изменить файл ca-bundle.crt, сохраните его (возможно, вам придется сохранить его на свой рабочий стол, а затем скопировать и вставить его обратно, чтобы перезаписать файл ca-bundle.crt).
  • Наконец, на основе вашего файла ca-bundle.crt выполните следующую команду: git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"

Ответ 4

Для тех, кто в корпорациях, кто получает ошибку самоподписанного сертификата - ниже, является альтернативой.

В корпорациях тот же сервер git, доступный по протоколу https, обычно также будет доступен по протоколу ssh.. Поэтому выберите параметр ssh URL-адреса сервера и клонируйте репозиторий как

git clone [email protected]/project.git

Конечно, открытый ключ (id_rsa.pub) из вашей папки ~\.ssh должен быть добавлен на сервер. Таким образом, вы не добавляете сертификат сервера https в хранилище сертификатов Windows или ключевое слово keychain (пример).

Ответ 5

Я столкнулся с этой ошибкой при использовании GitHub, и, похоже, она возникла из ниоткуда. Я проделал много работы на GitHub раньше.

Антивирус Касперского был виновником !!

Когда я отключил свою антивирусную защиту (и подождал пару минут), я смог вытолкнуть/вытащить из своего репозитория github.

Мое окончательное решение состояло в том, чтобы найти сертификат в Kaspersky, а затем добавить его в доверенное хранилище Git для Windows. Последний шаг уже подробно описан в принятом ответе, но для всех, кто находился в аналогичной ситуации, я смог найти сертификат Касперского, перейдя по ссылке:

Настройки> Дополнительно> Сеть> Сканирование зашифрованных соединений - Расширенные настройки> Установить сертификат> Показать сертификат> Сведения> Скопировать в файл> X.509 в кодировке Base-64 (.cer)

Ответ 6

Я нашел еще один ответ на этот вопрос:

$ git config http.sslVerify false