Как используются клиентские SSL/TLS сертификаты для аутентификации в Git?

Ответ

Клиентские SSL/TLS сертификаты — это один из способов аутентификации при работе с удаленными Git-репозиториями по протоколу HTTPS. Вместо пароля или токена, Git-клиент предоставляет серверу свой персональный сертификат для подтверждения личности.

Этот метод часто используется в корпоративных средах со строгими политиками безопасности.

Как это работает:

  1. Сервер (например, корпоративный GitLab) настраивается так, чтобы запрашивать клиентский сертификат при TLS-рукопожатии.
  2. Клиент (ваш компьютер) при выполнении git push или git pull предоставляет свой сертификат и приватный ключ.
  3. Сервер проверяет, что сертификат подписан доверенным удостоверяющим центром (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 будет запрашивать его при каждой операции.