Вопрос или проблема
Попытка обновить git на машине с Windows в git-bash с помощью git update-git-for-windows
завершается неудачей с сообщением от curl
:
curl: (60) Проблема с SSL сертификатом: самоподписанный сертификат в цепочке сертификатов
Подробности здесь: https://curl.se/docs/sslcerts.html
curl не смог проверить легитимность сервера и, следовательно, не смог
установить безопасное соединение с ним. Чтобы узнать больше об этой ситуации и
как это исправить, пожалуйста, посетите указанную выше веб-страницу.
Я ожидал этой проблемы, так как мы используем самоподписанные сертификаты. Я знаю, что это неправильно, но я не могу этого изменить.
Где мне найти пакет сертификатов, используемый curl или git, и добавить в него мой собственный доверенный корневой сертификат?
Первый шаг — узнать о вашей конфигурации. Вы увидите ваши значения конфигурации и место их хранения.
$ git config --list --show-origin --show-scope
system file:C:/Program Files/Git/etc/gitconfig <key>=<value>
system file:C:/Program Files/Git/etc/gitconfig <key>=<value>
...
global file:C:/Users/<USERNAME>/.gitconfig <key>=<value>
global file:C:/Users/<USERNAME>/.gitconfig <key>=<value>
...
Ищите ключи http.sslbackend
и http.sslcainfo
.
Только если http.sslbackend=openssl
, тогда http.sslcainfo
будет иметь значение.
Вот как это будет выглядеть в командной строке:
system file:C:/Program Files/Git/etc/gitconfig http.sslbackend=openssl
system file:C:/Program Files/Git/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
Теперь вы также видите файл, в который можете добавить свой CA, откройте ca-bundle.crt
и добавьте свой сертификат компании в конец.
Теперь проблема с самоподписанным сертификатом в цепочке сертификатов больше не возникнет.
Ответ или решение
Как добавить самоподписанный сертификат в пакет сертификатов в git-bash
При попытке обновления Git на Windows с использованием команды git update-git-for-windows
может возникнуть ошибка, связанная с curl
, в виде:
curl: (60) SSL certificate problem: self signed certificate in certificate chain
Это происходит, потому что cURL не может проверить подлинность сервера, поскольку используется самоподписанный сертификат. Если у вас нет возможности изменить это, вы можете добавить свой сертификат в доверенные.
Вот пошаговая инструкция о том, как это сделать:
-
Определите настройки конфигурации Git:
Вам нужно узнать, какие настройки применяются к вашему Git. Выполните следующую команду вgit-bash
, чтобы получить список конфигураций и информацию о том, где они хранятся:git config --list --show-origin --show-scope
В выводе вы увидите расположение файлов конфигурации и ключи, такие как
http.sslbackend
иhttp.sslcainfo
. Вам важно убедиться, чтоhttp.sslbackend
установлено вopenssl
, поскольку в противном случаеhttp.sslcainfo
не будет учитывать указанный файл сертификатов. -
Найдите файл с сертификатами:
Если вы видите следующее в выводе:system file:C:/Program Files/Git/etc/gitconfig http.sslbackend=openssl system file:C:/Program Files/Git/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
Это указывает на то, что
ca-bundle.crt
— это файл, в который вы можете добавить свой сертификат. -
Добавьте свой сертификат:
Откройте файлca-bundle.crt
, который находится по путиC:/Program Files/Git/mingw64/ssl/certs/
в текстовом редакторе с правами администратора.В конце файла добавьте ваш самоподписанный сертификат. Сертификат должен быть в формате PEM. Обычно это включает строку
-----BEGIN CERTIFICATE-----
в начале и строку-----END CERTIFICATE-----
в конце. -
Сохраните изменения:
После добавления сертификата сохраните файл и закройте текстовый редактор.
Теперь Git должен снова работать без ошибок, связанных с самоподписанными сертификатами. Вы сможете обновить Git и выполнять команды без дальнейших проблем с SSL.
Если вы по-прежнему сталкиваетесь с проблемами, убедитесь, что пути и версии вашего сертификата верны, а также что вы используете последнюю версию Git для Windows. В случае необходимости обновите его с официального сайта.