Ответ
Клиентские SSL/TLS сертификаты — это один из способов аутентификации при работе с удаленными Git-репозиториями по протоколу HTTPS. Вместо пароля или токена, Git-клиент предоставляет серверу свой персональный сертификат для подтверждения личности.
Этот метод часто используется в корпоративных средах со строгими политиками безопасности.
Как это работает:
- Сервер (например, корпоративный GitLab) настраивается так, чтобы запрашивать клиентский сертификат при TLS-рукопожатии.
- Клиент (ваш компьютер) при выполнении
git pushилиgit pullпредоставляет свой сертификат и приватный ключ. - Сервер проверяет, что сертификат подписан доверенным удостоверяющим центром (CA), и предоставляет доступ.
Настройка на стороне клиента:
Нужно указать Git, где находятся ваш сертификат и приватный ключ, с помощью глобальных настроек:
# Путь к вашему клиентскому сертификату в формате PEM
git config --global http.sslCert ~/.ssl/my-cert.pem
# Путь к вашему приватному ключу
git config --global http.sslKey ~/.ssl/my-key.key
Ключевые моменты:
- Альтернатива: Это альтернатива аутентификации по SSH-ключам, логину/паролю или персональным токенам доступа (PAT).
- Корпоративное использование: Редко встречается на публичных сервисах вроде GitHub, которые предпочитают SSH-ключи и токены.
- Формат: Сертификат и ключ обычно должны быть в формате PEM.
- Защита ключа: Приватный ключ не должен быть защищен паролем, иначе Git будет запрашивать его при каждой операции.
Ответ 18+ 🔞
А, ну вот, смотри, опять эти ваши корпоративные штуки с безопасностью! Клиентские SSL-сертификаты для Git, блядь. Ну, типа, вместо того чтобы пароль вводить или токен, ты, сука, предъявляешь свой персональный цифровой паспорт. Серверу. Как на границе, только в мире кода.
Это, конечно, не для нас, простых смертных, кто на GitHub'е ковыряется. Это когда ты в какой-нибудь большой конторе работаешь, где начальник безопасности — параноик с золотым пистолетом. Там всё строго: "Не подпишешь сертификат — не получишь доступ к репозиторию, иди нахуй".
Как эта магия, блядь, работает:
- Сервер (ну, тот самый корпоративный GitLab, который всех заебал) настраивается так, что при каждом твоём чихе в его сторону он орёт: "Предъяви документик, блядь!" Прямо во время TLS-рукопожатия.
- Ты (со своим компом) пытаешься сделать
git push, а он тебе: "А ну-ка, покажи свой сертификат и приватный ключ, хитрожопая мартышлюшка!" - Сервер смотрит, не поддельный ли твой паспорт, проверяет подпись удостоверяющего центра (того самого, которому все доверяют, ага), и если всё чисто — пускает тебя в святая святых.
Как это у себя настроить, чтобы не орали:
Нужно сказать своему Git'у, где ты спрятал эти важные бумажки. Делается через конфиг:
# Вот тут путь к твоему сертификату (формат PEM, не перепутай, а то не поймёт)
git config --global http.sslCert ~/.ssl/my-cert.pem
# А вот тут — к твоему секретному ключу
git config --global http.sslKey ~/.ssl/my-key.key
Важные нюансы, чтобы не обосраться:
- Замена всему: Это типа как SSH-ключи, только для HTTPS. Или как токены. Но с бумажками, ёпта.
- Для своих: На публичных помойках вроде GitHub'а эту хуйню почти не используют — там токены и SSH рулят. Это чисто корпоративная тема, где доверия ебать ноль.
- Формат — всё: Сертификат и ключ должны быть в PEM. Если принесёшь что-то другое — получишь в рот и в сраку одновременно.
- Пароль на ключе: Если ты такой умный и поставил на ключ пароль, то Git будет орать на тебя при каждой, блядь, операции. "Дай пароль, сука!" — и так до бесконечности. Так что лучше без него, но храни ключ как зеницу ока, а то накроешься медным тазом.