Я использую Git на Windows. Я установил пакет msysGit. Мой тестовый репозиторий имеет самозаверяющий сертификат на сервере. Я могу получить доступ и использовать репозиторий, используя HTTP без проблем. Переход на HTTPS дает ошибку:
Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента.
У меня есть самозаверяющий сертификат, установленный в доверенных корневых центрах сертификации моего компьютера под управлением Windows 7 - client. Я могу перейти к URL-адресу репозитория HTTPS в Internet Explorer без сообщений об ошибках.
В этом сообщении в блоге Филиппа Келли объясняется, что cURL не использует хранилище сертификатов клиентского компьютера. Я последовал совету поста в блоге, чтобы создать личную копию curl-ca-bundle.crt
и настроить Git для ее использования. Я уверен, что Git использует мою копию. Если я переименую копию; Git жалуется, что файл отсутствует.
Я вставил в свой сертификат, как уже упоминалось в сообщении в блоге, я все еще получаю сообщение «не удалось получить сертификат местного эмитента».
Я убедился, что Git все еще работает, клонировав репозиторий GitHub через HTTPS.
Единственное , что я вижу , что это отличается от блога в том , что мой сертификат является корневым - нет цепочки, чтобы добраться до него. Первоначально мой сертификат был получен после нажатия на ссылку IIS8 IIS Manager «Создать самоподписанный сертификат». Может быть, это каким-то образом отличает сертификат от того, что ожидает cURL.
Как я могу заставить Git / cURL принять самоподписанный сертификат?
{ "strict-ssl": false }
. Не благодари меня, поблагодари этого парня: stapp.space/fight-with-2 Я боролся с этой ошибкой почти 5 часов подряд!Ответы:
Откройте Git Bash и выполните команду, если вы хотите полностью отключить проверку SSL.
Примечание. Это решение может открыть для вас атаки типа «человек посередине» . Поэтому снова включите проверку как можно скорее:
источник
git -c http.sslVerify=false clone https://domain.com/path/to/git
Проблема в том, что git по умолчанию использует крипто-бэкэнд "Linux".
Начиная с Git для Windows 2.14, теперь вы можете настроить Git для использования SChannel, встроенного сетевого уровня Windows в качестве крипто-бэкэнда. Это означает, что вы будете использовать механизм хранения сертификатов Windows, и вам не нужно явно настраивать механизм хранения curl CA: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Просто выполните:
Это должно помочь.
Использование schannel в настоящее время является стандартной установкой при установке git для windows, также рекомендуется по возможности не извлекать из хранилища SSH, так как https проще в настройке и с меньшей вероятностью будет заблокирован брандмауэром, что означает меньшую вероятность сбоя.
источник
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
не работать. Я настроилhttp.sslCAInfo
использование самозаверяющего сертификата для своего сервера, и по этой причине (может не совпадать с OP) я столкнулся с «проблемой SSL-сертификата: невозможно получить сертификат локального эмитента», когда я выполняю, например, agit clone https://github.com/Microsoft/vscode.git
. Наконец, я использовал ответ от stackoverflow.com/a/47196562/1323552 (Бен П.П. Тунг), чтобы настроить мою конфигурацию sslCAInfo, специфичную для моего git-сервера, для ее решения.У меня тоже была эта проблема. В моем случае я пытался получить перехват Git после получения, чтобы обновлять рабочую копию на сервере при каждом нажатии. Пытался следовать инструкциям в блоге, на который вы ссылались. У меня это тоже не сработало и переопределение настроек для каждого пользователя тоже не сработало.
В итоге мне пришлось отключить проверку SSL (как упоминается в статье) для Git в целом. Не идеальное решение, но оно будет работать, пока я не найду лучшего.
Я отредактировал текстовый файл конфигурации Git (с моим любимым нейтральным приложением, заканчивающимся строкой, таким как Notepad ++), расположенный по адресу:
В блоке [http] я добавил опцию отключения sslVerify. Это выглядело так, когда я закончил:
Это добилось цели.
НОТА:
Это отключает проверку SSL и не рекомендуется в качестве долгосрочного решения.
Вы можете отключить этот репозиторий, который все еще не очень хорош, но локализует настройки.
С появлением LetsEncrypt.org стало довольно просто, автоматизировано и бесплатно настроить SSL как альтернативу самозаверяющим сертификатам, что исключает необходимость отключения sslVerify.
источник
sslCAinfo
входа в конфигурацию; но я не одобряю ответ, так как не имеет большого смысла постоянно отключать SSL для git для всей системы (пытались ли вы отключить его для всей системы, затем клонировать, затем снова включить, а затем отключить в локальный конфиг git для вновь клонированного репо?).git -c http.sslVerify=false clone https://...
kiddailey, я думаю, был довольно близок, однако я бы не стал отключать ssl-проверку, а просто поставил бы локальный сертификат:
В конфигурационном файле Git
Или через командную строку:
источник
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
чтобы увидеть , где http.sslCAinfo конфигурации установленЯ тоже столкнулся с этой проблемой. И, наконец, решена, получив руководство из этого блога MSDN .
Обновить
На самом деле вам нужно добавить сертификат в файл сертификатов git curl-ca-bundel.cert, который находится в каталоге Git \ bin.
меры
Наконец, проверьте статус. Обратите внимание, что перед редактированием сделайте резервную копию файла curl-ca-bundle.crt, чтобы сохранить его в безопасности.
источник
ca-bundle.crt
и находиться вmingw64\ssl\certs
илиmingw32\ssl\certs
.Ответ на этот вопрос Использование makecert для разработки SSL исправило это для меня.
Я не знаю почему, но сертификат, созданный простой ссылкой «Создать самоподписанный сертификат» в IIS Manager, не работает. Я следовал подходу в связанном вопросе создания и установки самоподписанного CA Root; затем с помощью этого выдать сертификат проверки подлинности сервера для моего сервера. Я установил их обоих в IIS.
Это объясняет мою ситуацию так же, как сообщение в блоге, на которое ссылается оригинальный вопрос. Как только корневой сертификат был скопирован / вставлен в curl-ca-bundle.crt, комбо git / curl было удовлетворено.
источник
Чтобы избежать полного отключения проверки ssl или дублирования / взлома связанного файла сертификата CA, используемого git, вы можете экспортировать цепочку сертификатов хоста в файл и заставить ее использовать git:
Если это не работает, вы можете отключить проверку SSL только для хоста:
Примечание: Подвергается возможному нападению человека в середине, когда проверка SSL отключена.
источник
--global
опция не нужна: если вы ее опустите--global
, эта настройка будет применяться только к этому конкретному git-репо.У меня только что была та же проблема, но с использованием sourcetree в Windows. Те же шаги для обычного GIT в Windows. После следующих шагов мне удалось решить эту проблему.
Это должно решить вашу проблему с самоподписанными сертификатами и использованием GIT.
Я попытался использовать конфигурацию "http.sslcapath", но это не сработало. Кроме того, если бы я не включил всю цепочку в файл сертификатов, то это также не получится. Если у кого-то есть указатели на них, пожалуйста, дайте мне знать, так как выше необходимо повторить для новой установки.
Если это системный GIT, то вы можете использовать параметры на вкладке ИНСТРУМЕНТЫ -> параметры GIt, чтобы использовать системный GIT, и это также решает проблему в sourcetree.
источник
В случае с github Repositories (или любыми неподписанными сертификатами) , выбрав ниже при установке Git-on-windows, эта проблема была решена.
источник
У меня была эта проблема раньше, и решить ее с помощью следующего конфига.
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Начиная с git 2.3.1, вы можете поставить
https://your.domain
после http, чтобы указать, что следующий сертификат только для него.источник
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
ранее (следовательно, это вызвало ошибку «невозможно получить сертификат локального эмитента»)C:\Program Files\Git\bin
иC:\Program Files\Git\mingw64\bin
Затем попробуйте что-то вроде:
git clone https://github.com/heroku/node-js-getting-started.git
источник
Одна вещь, которая меня испортила, была формат пути (на моем ПК с Windows). У меня изначально было это:
Но это не удалось из-за ошибки «невозможно получить сертификат локального эмитента».
Что в итоге сработало, так это:
источник
В моем случае, поскольку я установил терминал ConEmu для Windows 7, он создает во
ca-bundle
время установки вC:\Program Files\Git\mingw64\ssl\certs
.Таким образом, я должен выполнить следующие команды на терминале, чтобы он работал:
Следовательно, мой
C:\Program Files\Git\etc\gitconfig
содержит следующее:Также я выбрал ту же опцию, что и здесь, при установке Git.
Надеюсь, это поможет!
источник
Устранить проблему с ошибкой SSL-сертификата: невозможно получить сертификат локального эмитента в git
У меня была такая же проблема с сертификатами Let's Encrypt.
Веб-сайт с https нам просто нужно:
но git pull говорит:
Чтобы это исправить, нам нужно также добавить:
источник
Используйте эту команду перед запуском обновления / установки composer:
источник