From 6d963945699bf9e4f2b79f6fcf85c9abd483d710 Mon Sep 17 00:00:00 2001 From: pashko Date: Wed, 9 Apr 2025 18:22:40 +0800 Subject: [PATCH] Add git_ssl.md --- git_ssl.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 git_ssl.md diff --git a/git_ssl.md b/git_ssl.md new file mode 100644 index 0000000..6107674 --- /dev/null +++ b/git_ssl.md @@ -0,0 +1,94 @@ +Настройка сертификатов в Windows для Git может быть сложной задачей, особенно если вы используете несколько инструментов (например, Git Bash, OpenJDK через `keytool`, и т.д.). Давайте разберёмся, куда правильно добавлять самоподписанный сертификат (self-signed certificate) для работы с Git. + +--- + +### 1. **Где хранятся сертификаты для Git на Windows?** +Git на Windows использует OpenSSL для работы с SSL-сертификатами. Это означает, что Git полагается на файлы сертификатов, которые находятся в следующих директориях: + +#### **Основные пути:** +- **`C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt`** + Это основной файл, который Git использует для проверки SSL-сертификатов. Этот файл содержит "пакет" доверенных корневых сертификатов. + +- **`C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.trust.crt`** + Этот файл также может использоваться Git, но он обычно является резервным или дополнительным. + +#### **Другие пути:** +- **`C:\Program Files\Git\mingw64\etc\pki\ca-trust\extracted\openssl\ca-bundle.trust.crt`** + Этот путь используется только в случае, если Git настроен на использование специальных конфигураций PKI. Обычно это не требуется. + +- **`C:\Program Files\Git\mingw64\share\pki\ca-trust-source`** + Этот каталог предназначен для добавления пользовательских сертификатов в системы, использующие `ca-certificates` (например, Linux). На Windows это редко используется. + +- **`C:\Program Files\Git\mingw64\etc\pki\ca-trust\extracted\java\cacerts`** + Этот файл используется Java (`keytool`) для управления сертификатами. Он **не влияет на работу Git**, так как Git использует OpenSSL, а не Java. + +--- + +### 2. **Как правильно добавить self-signed сертификат?** + +#### **Шаги для добавления сертификата в Git:** + +1. **Получите сертификат:** + - Если у вас есть `.crt` или `.pem` файл с сертификатом, сохраните его локально (например, `my-cert.crt`). + +2. **Добавьте сертификат в `ca-bundle.crt`:** + - Откройте файл `C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt` в текстовом редакторе (например, Notepad++). + - Вставьте содержимое вашего сертификата (`my-cert.crt`) в конец файла. + - Убедитесь, что сертификат начинается с `-----BEGIN CERTIFICATE-----` и заканчивается `-----END CERTIFICATE-----`. + +3. **Альтернативный способ: указать отдельный файл через Git config:** + Если вы не хотите изменять `ca-bundle.crt`, вы можете указать путь к вашему сертификату через Git: + ```bash + git config --global http.sslCAInfo "C:/path/to/my-cert.crt" + ``` + +--- + +### 3. **Использование `keytool` для Java-приложений** +Если вы используете `keytool` для добавления сертификата в хранилище Java (`cacerts`), это **не повлияет на Git**, так как Git использует OpenSSL, а не Java. Однако, если вы работаете с Java-приложениями (например, Maven, Gradle), вы можете добавить сертификат в `cacerts`: + +1. Найдите файл `cacerts`: + - Обычно он находится по пути: + `C:\Program Files\Java\\lib\security\cacerts` + +2. Добавьте сертификат: + ```bash + keytool -import -trustcacerts -keystore "C:\Program Files\Java\\lib\security\cacerts" -storepass changeit -alias my-cert -file "C:/path/to/my-cert.crt" + ``` + - Замените `` на версию Java. + - Пароль по умолчанию для `cacerts`: `changeit`. + +3. Подтвердите добавление: + ```bash + keytool -list -keystore "C:\Program Files\Java\\lib\security\cacerts" -alias my-cert + ``` + +--- + +### 4. **Куда добавлять сертификат для Git?** +Ответ зависит от ваших целей: + +| **Цель** | **Куда добавлять сертификат** | +|------------------------------------|---------------------------------------------------------------------------------------------| +| Для работы с Git | `C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt` | +| Для работы с Git (альтернативно) | Указать путь через `git config --global http.sslCAInfo "C:/path/to/my-cert.crt"` | +| Для работы с Java-приложениями | `C:\Program Files\Java\\lib\security\cacerts` (используйте `keytool`) | +| Для системного использования | Импортируйте сертификат в хранилище сертификатов Windows через `certmgr.msc` | + +--- + +### 5. **Рекомендации** +- Если вы добавили сертификат в `ca-bundle.crt`, перезапустите Git Bash или терминал, чтобы изменения вступили в силу. +- Если вы используете `http.sslCAInfo`, убедитесь, что путь указан правильно и доступен из любой директории. +- Если вы работаете в корпоративной среде, уточните у администратора, какой именно сертификат нужно добавить и куда. + +--- + +### 6. **Проверка работы сертификата** +После добавления сертификата выполните тестовый запрос: +```bash +git ls-remote https://azuredevops.corp.org/TEST/_git/test +``` +Если проблема решена, команда выполнится без ошибок SSL. + +Если возникнут дополнительные вопросы, уточните детали, и я помогу разобраться! \ No newline at end of file