Ошибка сертификата SSL GitHub: самоподписанный сертификат в цепочке сертификатов [дубликат]

Это бесконечный цикл. Не совсем правильное кодирование, потому что оно не является интуитивным, которое фактически скомпилирует или не выдаст ошибку времени выполнения. Переписывание как while(true) { /* code */ } было бы более читаемым, чтобы указать бесконечный цикл.

24
задан Archie 12 March 2016 в 13:31
поделиться

5 ответов

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

  • Git для Windows & lt; = 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).

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

  1. Откройте URL-адрес сайта в Internet Explorer
  2. Нажмите на символ блокировки на локальной панели и выберите «Показать сертификаты» (или выберите «Свойства сайта» и нажмите « «Сертификаты»)
  3. (необязательно) Выберите сертификат, которому вы хотите доверять, в цепочке сертификатов (третья вкладка) и откройте его
  4. Перейдите ко второй вкладке «Сведения»
  5. Нажмите «Сохранить в файл», выберите «Base64-encoded X.509 (.CER)» и сохраните его с уникальным именем (помните это имя; не рекомендуется использовать имя без мест).
  6. Теперь у вас есть несколько вариантов. Используйте отдельный хранилище доверия сертификатов, в котором содержится только что загруженный сертификат, выполнив 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 на desktop, добавьте содержимое файла downlaoded .crt, а затем скопируйте его). Недостаток: изменения могут быть перезаписаны при обновлении git

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

27
ответ дан MrTux 19 August 2018 в 11:54
поделиться

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

  • Из командной строки выполните следующую команду: git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • Откройте файл MyCert.cer в Блокноте и оставьте его открытым
  • Откройте файл Git 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"
3
ответ дан Community 19 August 2018 в 11:54
поделиться
  • 1
    Поскольку мой ответ был основан на среде Windows, я хочу поделиться немного дополнительной информацией. В Chrome 58 нам пришлось повторно генерировать наш сертификат, чтобы иметь альтернативное имя объекта (SAN). Вышеупомянутый подход больше не работал с этим новым сертификатом. Git-клоны через Visual Studio ошибочно «не могут получить сертификат локального эмитента». Если вы доверяете сертификату в своем хранилище сертификатов Windows (один Chrome, Internet Explorer и т. Д.), Почему бы не сказать Git использовать это хранилище сертификатов вместо пакета CA openssl по умолчанию? Для этого выполните команду: git config --global http.sslBackend schannel – dan-iel 21 March 2018 в 22:54
  • 2
    – Iman Abidi 30 June 2018 в 07:40

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

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

21
ответ дан James Moger 19 August 2018 в 11:54
поделиться
  • 1
    Да, я надеялся, что смогу исправить это на сервере, а не настроить все настройки git. – Justin 16 October 2013 в 23:41
  • 2
    Не рекомендуется. но это как установить его глобально: git config --global http.sslVerify false – Gal Bracha 30 January 2014 в 20:38
  • 3
    Отключение проверки SSL является ЧРЕЗВЫЧАЙНЫМ ОПАСНЫМ. Весь смысл проверки сертификата SSL заключается в том, чтобы защитить ваш код от несанкционированного доступа, когда вы передаете его через HTTPS. Отключение этого означает, что злоумышленники могут вставлять в ваш код уязвимости и другие неприятные вещи, когда вы нажимаете и извлекаете их. Не рекомендуется, если вы не уверены, что Man in the Middle attack не заботится о вас. – user 18 April 2014 в 20:14
  • 4
    @GalBracha Если я установил http.sslVerify false, соединение будет безопасно? и это хороший путь для использования? Между нами используется брандмауэр pfsense – Nullpointer 22 December 2015 в 13:47

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

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

git clone user@server/project.git

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

0
ответ дан Kiran 19 August 2018 в 11:54
поделиться
0
ответ дан The Gilbert Arenas Dagger 31 October 2018 в 00:10
поделиться